Bash腳本之if-then語句

本博客已遷往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編碼中大寫字母在前,小寫字母在後。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章