Linux Shell腳本攻略學習總結:二
比較與測試
程序中的流程控制是由比較和測試語句來處理的。
我們可以用if,if else 以及邏輯運算符來執行測試,而用一些比較運算符來比較數據項。另外,有一個test 命令也可以用來進行測試。讓我們來看看如何使用這些命令。
實戰演練:
[python]
if 條件:
if condition;
then
commands;
fi
else if 和 else :
if condition;
then
commands;
elif condition;
then
commands
else
commands
fi
if和else語句可以進行嵌套。if的條件判斷部分可能會變得很長,但可以用邏輯運算符將它變得簡潔一些:
[python]
[ condition ] && action; #如果condition為真,則執行action
[ condition ] || action; #如果condition為假,則執行action
&&是邏輯與運算符,||是邏輯或運算符。
算數比較
條件通常被放在封閉的中括號內。一定要注意在[或]與操作數之間是有一個空格的。如果不加,則腳本會報錯。例如:
[python]
[ $var -eq 0 ] or [ $var -eq 0 ]
對變量值進行算數條件判斷:
[python]
[ $var -er 0 ] #當$var等於0時,返回真
[ $var -ne 0 ] #當$var為非0時,返回真
其他重要的操作符如下所示:
[python]
-gt :大於
-lt :小於
-ge :大於等於
-le :小於等於
字符串比較
使用字符串比較時,最好使用雙中括號,因為有時候采用單個中括號會產生錯誤,所以最好避開它們。
[python]
[[ $str1 = $str2 ]] :當str1等於str2時,返回真。也就是說,str1和str2包含的文本是一樣的
[[ $str1 ==$str2 ]] :這是檢查字符串是否相等的另一種寫法
[[ $str1 != $str2 ]] :如果str1和str2不相同,則返回真
我們還可以檢查字符串的字母序情況,具體如下所示:
[python]
[[ $str1 > $str2 ]] :如果str1的字母序比str2的大,則返回真
[[ $str1 < $str2 ]] :如果str1的字母序比str2的小,則返回真
[[ -z $str1 ]] :如果str1中包含的是空字符串,則返回真
[[ -n $str1 ]] :如果str1中包含的是非空字符串,則返回真
注意:
在 = 號前後各有一個空格。如果忘記加空格,那就不是比較關系了,而變成了賦值語句。