bash中經常使用的條件測試有三種:express
測試方法:bash
[ expression ] 命令測試法ide
[[ expression ]] 關鍵字測試法測試
test expression spa
整數測試:orm
-gt
it
-le
io
-ne
class
-eqtest
-ge
-lt
例:
INT1=63
INT2=77
[ $INT1 -eq $INT2 ]
[[ $INT1 -eq $NET2 ]]
test $INT1 -eq $NET2
文件測試:
-e FILE:測試文件是否存在
-f FILE:測試文件是否爲普通文件
-d FILE:測試指定路徑是否爲目錄
-r FILE:測試當前用戶對指定文件是否有讀取的權限
-w FILE:測試當前用戶對指定文件是否有寫入的權限
-x FILE:測試當前用戶對指定文件是否有執行的權限
例:寫一個腳本,給定一個文件,若是是普通文件,就顯示之;若是是一個目錄,亦顯示之;不然,顯示此爲沒法識別文件。
#!/bin/bash
#
file=/etc/passwd \\定義變量file
if [ ! -e $file ];then \\若是文件不存在
echo "no such file." \\就顯示文件不存在
exit 2 \\結束腳本
fi
if [ -f $file ];then \\若是文件存在就判斷是否是普通文件
echo "common file." \\是就顯示文件爲普通文件
elif [ -d $file ];then \\不然就測試是否爲目錄
echo "Directory." \\是就顯示是目錄
else \\不然
echo "unknow" \\就顯示文法識別
fi
定義腳本退出狀態碼
提早結束腳本:exit
exit #
若是腳本沒有明肯定義退出狀態碼,那麼,最後執行的一條命令的退出碼既爲腳本的退出狀態碼:
測試腳本是否有語法錯誤:
bash -n +腳本名
逐條顯示執行:bash -x +腳本名
bash變量的類型:
本地變量(局部變量)
環境變量
位置變量:$1,$2,.... 引用位置參數 shift:輪替
./filetest,sh /etc/fatab /etc/inittab
$1:/etc/fatab
$2:/etc/inittab
例:能接受一個參數(文件路徑),斷定:此參數若是是一個存在的文件,就顯示「OK」,不然就顯示「NO such file.」
#!/bin/bash
#
if [ -e $1 ]; then
echo "OK."
else
echo "NO such file."
fi
例:寫一個腳本,給腳本傳遞兩個參數,顯示兩個參數的和,成積。
#!/bin/bash
if [ $# -lt 2 ];then
echo "Usage:file3.sh ARG1 ARG2"
fi
echo "the sum is $[$1+$2]."
echo "the product is $[$1*$2]"
特殊變量
$?:上一條命令的退出狀態碼
$#:參數的個數
$*:參數列表
$@:參數列表