bash學習之條件語句(三)
阿新 • • 發佈:2018-12-20
在具體說明條件語句之前,先引入一下測試語句。顧名思義,測試語句就相當於布林型別,可以用來條件語句的判斷。
1.測試語句有兩種,第一種是test express 的測試語句,另一種是[ express ] 的測試語句,這兩種語句都是返回的一個布林型別的值。下面說明這兩個語句的具體用法: 數值比較:
num1 -eq num2 : #num1=num2
num1 -gt num2 : #num1>num2
num1 -ge num2 : #num1>=num2
num1 -lt num2 : #num1<num2
num1 -le num2 : #num1<=num2
檔案:
-e : #存在為真
-f : #是否是檔案
-d: #是否是資料夾
當然,檔案的可選引數並非只有這些,有興趣的可以自己去查閱資料 字串:
= :#判斷相等
!= : #不等
-z : #是否為空,相當於empty方法
-n : #是否不為空
2.if選擇語句 語法結構
if [ express1 ]
then
command
elif [ express2 ]
then
command
else
command
fi
上面的即bash中的if語句,當然elif 和 else可以沒有,程式將會從上向下進行判斷,當進入一個判斷之後,後面的就不會在判斷了 程式1:
#!/bin/bash
#if語句用法
var1=12
var2=10
if [ $var1 -lt $var2 ]
then
echo $var1 \< $var2
elif [ $var1 -eq $var2 ]
then
echo $var1 = $var2
else
echo $var1 \> $var2
fi
執行結果 程式說明: 由於bash裡面< , > 有著特殊的含義,因此用\進行轉義
3.case選擇語句 語法結構
case express in
value1)command1;;
value2)command2;;
*)commandn; ;
esac
最後的 *) 是一個預設的選擇結構,全部匹配 程式2:
#!/bin/bash
#case語句用法
case $LOGNAME in
"root")echo 使用者為超級使用者;;
"curve")echo 使用者為管理員;;
*)echo 未知使用者;;
esac
echo $LOGNAME
執行結果: case的作用相當於c語言中的switch。只不過風格不一樣 ;; 用來作為一個語句的退出,另外結尾有一個esac (case的反寫)作為判斷case的結尾
4.select條件語句 select語句和case一樣是一個多條件選擇語句,不過,select會在in後面新增一些可選項,這些可選項會在終端顯現出來,選擇其中一個(填數字),如下: 程式3:
#!/bin/bash
#select語句用法
select m in 雞 鴨 魚
do
break
done
echo 你喜歡的是$m
執行結果:
5.邏輯組合 當需要一些邏輯表達是組合的時候可以和高階語法的邏輯組和符運用 高階語法一樣用 && || ! 當然,bash也有著自己風格的組合表達方式如下 -a 相當與&& -o 相當與|| 小結:bash的選擇結構和其他語法的類似,之後過有著自己的風格,並且每個語句最後都要這個語句反寫作為結束。bash的邏輯判斷除了能用高階語法中的方法外,還有這自己風格的方法。