本博客已遷往http://coredumper.cn
if-then語句格式如下:
if 命令; then
命令塊
fi
注意:
如果命令的退出狀態碼是0,則執行命令塊,否則跳過命令塊。
每條命令執行結束後都會產生一個退出狀態碼,退出狀態碼是0-255之間的一個整數值。
bash 腳本通常以命令“exit 數字”結尾,這個“數字”將會作爲整個腳本的退出狀態碼。如果腳本結束時沒有遇到該命令,則腳本會以腳本中執行的最後一條命令的退出狀態碼退出。
可以用命令“echo $?”查看上一條命令的退出狀態碼。
通常在if中使用命令test,命令test還可以用[ ]代替,如果測試結果爲真則退出狀態碼爲0,如果測試結果爲假則退出狀態碼爲1。
如下兩條命令是等價的:
test 1 -lt 2
[ "1" -lt "2" ]
[ ]這種方式對格式有嚴格的要求:[ ]中每個組件都需要用空格符分隔,[ ]中的變量和常量最好都用雙引號引起來。
多個[ ]可以使用&&或者||進行邏輯運算,也可以在[ ]內部使用!表示反向狀態。
命令test支持三種類型的比較:數值比較,字符串比較,文件比較。其中數值比較和字符串比較使用的標誌容易混淆,數值比較使用的標誌是-eq、-ge、-gt、-le、-lt、-ne。字符串比較使用的標誌是==(或者=,不建議使用)、!=、<、>、-n、-z。
在使用字符串比較標誌<和>時,需要對其轉義,否則它們會被當作重定向符號。另外,字符串的大小關係是由ASCII編碼決定的。需要注意的是命令sort,它使用的是系統的本地化語言設置中定義的順序,這種順序指定了小寫字母在前,大寫字母在後,而ASCII編碼中大寫字母在前,小寫字母在後。