bash中常用的條件測試有三種:
整數測試:
-gt 大于
-le 小于等于
-ne 不等于
-eq 等于
-ge 大于等于
-lt 小于
測試方法:
[ expression ] 注意前後都要個空格,否則文法錯誤 (指令測試法)
[[ expression ]] (關鍵字測試法)
test expression
例如:
INT1=63
INT2=77
[ $INT1 -eq $INT2 ]
[[ $INT1 -eq $INT2 ]
test $INT1 -eq $INT2
檔案測試:
-e FILE(路徑):測試檔案是否存在
-f FILE:測試檔案是否為普通檔案
-d FILE:測試指定路徑是否為目錄
-r FILE:測試目前使用者對指定檔案是否有讀取權限
-w
-x
[ -e /etc/inittab ]
exit:退出腳本
exit #
如果腳本沒有明确定義退出狀态碼,那麼,最後執行的一條指令的退出碼即為腳本的退出狀态碼
bash -n 腳本 (測試腳本是否有文法錯誤的)
bash -x 腳本 (單步執行)
多分支的if語句:
if 判斷條件1;then
statement1
...
elif 判斷條件2;then
statement2
elif 判斷條件3;then
statement3
fi
練習:寫一個腳本
給定一個檔案:
如果是一個普通檔案,就顯示之
如果是一個目錄,也顯示之
否則,此為無法識别檔案
FILE="/mnt/rice6"
FILENAME=`$FILE | cut -d'/' -f3`
if [ ! -e $FILE ]; then
echo"此檔案不存在"
exit 6
if [ -f $FILE ]; then
echo"$FILENAME是一個檔案"
elif [ -d $FILE ]; then
echo"$FILENAME是一個目錄"
else
echo"無法識别"
bash變量的類型
作用域:目前shell程序 本地變量(局部變量)
作用域:目前shell程序及其子程序 環境變量
位置變量:$1,$2,如: ls /etc/passwd /mnt/test
$1:/etc/passwd
$2:/mnt/test
特殊變量:
$?:上一條指令的退出狀态碼
$#:參數的個數
$*:參數清單
$@:參數清單