Shell 條件語句
條件語句
shell中的條件語句用[]號括起來,用於if,while,until等結構。
條件判斷用=號,而不是==號。條件語句與[] 號之間要有空格分開。
gender="boy"
if [ "$gender" = "girl" ]
then
echo 'Welcome!'
else
echo 'We only welcome girl.'
fi
還有要注意的是條件語句中=號兩旁要有空格分開,否則shell會將條件語句整個作爲一個字符串處理,條件永遠爲真。條件語句中的變量最好用"號引起來,否則如果該變量中有空格,shell就會報too many arguments錯誤。如果變量正好爲空,則會報 =: unary operator expected.錯誤。因爲變量爲空的話,條件語句少了一邊,當然會出錯。所以,將字符串變量用雙引號括起來是shell編程的好習慣,尤其在條件語句中。
其他的比較符號,如 >,<,不能直接在條件語句中使用,因爲>號在shell中有特殊含義。下面是shell的比較運算符號表示方法:
算術比較運算符
num1 eq num2 等於 [ 3 eq $mynum ]
num1-ne num2 不等於 [ 3 -ne $mynum ]
num1-lt num2 小於 [ 3 -lt $mynum ]
num1-le num2 小於或等於 [ 3 -le $mynum ]
num1-gt num2 大於 [ 3 -gt $mynum ]
num1-ge num2 大於或等於 [ 3 -ge $mynum ]
算術比較運算符num1-eq num2 等於 [ 3 -eq $mynum ]num1-ne num2 不等於 [ 3 -ne $mynum ]num1-lt num2 小於 [ 3 -lt $mynum ]num1-le num2 小於或等於 [ 3 -le $mynum ]num1-gt num2 大於 [ 3 -gt $mynum ]num1-ge num2 大於或等於 [ 3 -ge $mynum ]
字符串比較運算符
-z string 如果 string長度爲零,則爲真 [ -z "$myvar" ]
-n string 如果 string長度非零,則爲真 [ -n "$myvar" ]
string1= string2 如果 string1與 string2相同,則爲真 [ "$myvar" = "one two three" ]
string1!= string2 如果 string1與 string2不同,則爲真 [ "$myvar" != "one two three" ]
字符串比較運算符 -z string 如果 string長度爲零,則爲真 [ -z "$myvar" ]-n string 如果 string長度非零,則爲真 [ -n "$myvar" ]string1= string2 如果 string1與 string2相同,則爲真 [ "$myvar" = "one two three" ]string1!= string2 如果 string1與 string2不同,則爲真 [ "$myvar" != "one two three" ]