一 if語句的格式
if 條件
then
執行語句
fi
注意,最后必須用fi來閉合。無需使用{ }來包裹。
if then有兩種寫法,同一行時,必須有分號。獨占一行時不用分號
如:
同一行
if [[ $a > $b ]] ; then
echo "111"
else
echo "00"
fi
獨占一行
if [[ $a > $b ]]
then
echo "111"
else
echo "00"
fi
二 if的各種括號的寫法
1、數值的比較
-eq 等于,如:if [ "$cc" -eq "$dd" ]
-ne 不等于,如:if [ "$cc" -ne "$dd" ]
-gt 大于,如:if [ "$cc" -gt "$dd" ]
-ge 大于等于,如:if [ "$cc" -ge "$dd" ]
-lt 小于,如:if [ "$a" -lt "$b" ]
-le 小于等于,如:if [ "$cc" -le "$dd" ]
使用符號是,用雙括號 如:(("$cc" > "$dd"))
如:(("$a" >= "$b"))
2、字符串的比較
= 等于,如:if [ "$a" = "$b" ]
== 等于,如:if [ "$a" == "$b" ],與=等價
!= 不等于,如:if [ "$a" != "$b" ]
這個操作符將在[[]]結構中使用模式匹配.
大于,在ASCII字母順序下.如:
if [[ "$a" > "$b" ]] 雙括號無需轉義
if [ "$a" > "$b" ] 單括號要轉義
注意:在單括號[]結構中">",< 等需要轉義.
=和==是等價的,這個比較奇怪
以下語句是等價的,其中-a表示 and
if [ $cc -ne 1 -a $cc != 2 ]
if [ $cc -ne 1] && [ $cc != 2 ]
if [[ $cc != 1 && $cc != 2 ]]
通過以上可以看出,使用雙括號時,最簡單直觀
上述的if的后面,括號里面的表達式都要有空格
單括號時,字符串的比較使用 = == !=
單括號時,數值的比較使用 -eq -ne -gt -ge -lt -le
雙括號與雙中括號的區別:
((表達式))常用于算術運算比較,雙括號中的變量可以不使用$符號前綴
如:
while ((aa<100)) #數值與運算符可以沒有空格,變量的使用時也可以不使用$aa
do
echo "$aa"
((aa=aa*2))
done