天天看點

shell 腳本之判斷語句 if 詳解

使用 Linux 系統這麼長時間,對 shell 腳本也算是比較熟悉。其實不管是搞開發,還是搞運維,shell 腳本都是必備的基本技能。這次抽時間好好總結一下 shell 方面的知識,綜合的再學習一下,記錄。這篇文章總結的是 shell 腳本的 if 語句的使用。

一、if 語句的基本文法

if [ 條件判斷 ]; then
    ... ...
elif [ 條件判斷 ]; then
    ... ...
else
    ... ...
fi      

二、檔案/目錄的判斷

關于檔案或目錄的相關判斷方法:

[ -e file ]  判斷檔案是否存在
[ -f file ]  判斷檔案是否是普通檔案
[ -d file ]  判斷檔案是否是目錄檔案
[ -b file ]  判斷檔案是否塊裝置檔案
[ -c file ]  判斷檔案是否字元裝置檔案
[ -s file ]  判斷檔案是否是非空檔案      
[ -r file ]  判斷檔案是否可讀
[ -w file ]  判斷檔案是否可寫
[ -x file ]  判斷檔案是否可執行      

三、數字比較判斷

關于針對數字的判斷,首先定義a=10, b=8

[root@vip ~]# a=10 b=8      
[ $a -eq $b ]  判斷 a 是否等于 b
[ $a -ne $b ]  判斷 a 是否不等 b
[ $a -gt $b ]  判斷 a 是否大于 b
[ $a -ge $b ]  判斷 a 是否大等 b
[ $a -lt $b ]  判斷 a 是否小于 b
[ $a -le $b ]  判斷 a 是否小等 b      

四、字元串的判斷和比較

關于針對字元串的判斷比較,首先定義 str1=abc, str2=abd

[root@vip ~]# str1=abc; str2=abd

[ -z str ]        判斷 str 是否長度為0
[ -n str ]        判斷 str 是否長度不為0
[ str1 == str2 ]  判斷 str1 與 str2 是否相等
[ str1 != str2 ]  判斷 str1 與 str2 是否不等
[ str1 \> str2 ]  判斷 str1 是否大于 str2
[ str1 \< str2 ]  判斷 str1 是否小于 str2
[[ str1 > str2 ]] 判斷 str1 是否大于 str2
[[ str1 < str2 ]] 判斷 str1 是否小于 str2      

五、邏輯判斷

[ $a -lt $b -a $str1 == $str2 ]     a 大于 b, 而且 str1 與 str2 相等  (&&)
[ $a -lt $b -o $str1 == $str2 ]     a 大于 b, 或者 str1 與 str2 相等  (||)
[[ $a -gt $b && $str1 == $str2 ]]   a 大于 b, 而且 str1 與 str2 相等  (&&)
[[ $a -gt $b || $str1 == $str2 ]]   a 大于 b, 或者 str1 與 str2 相等  (||)
[ $a -lt $b ] && [ $str1 == $str2 ] a 大于 b, 而且 str1 與 str2 相等  (&&)
[ $a -lt $b ] || [ $str1 == $str2 ] a 大于 b, 或者 str1 與 str2 相等  (||)      

六、常用 if 執行個體

待更新。。。