shell 指令碼之判斷語句 if 詳解

2022-01-10 17:58:06 字數 2194 閱讀 5751

使用 linux 系統這麼長時間,對 shell 指令碼也算是比較熟悉。其實不管是搞開發,還是搞運維,shell 指令碼都是必備的基本技能。這次抽時間好好總結一下 shell 方面的知識,綜合的再學習一下,記錄。這篇文章總結的是 shell 指令碼的 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

[-zstr ] 判斷 str 是否長度為0

[-nstr ] 判斷 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 相等 (||)

待更新。。。

shell指令碼的條件判斷語句

條件判斷,顧名思義,就是對當前引數進行相關條件的比較,如果符合要求就進行相對應的操作,條件語句涉及到兩種語法,if和case,兩種語法都各具特色,我們可以通過例項來進行比較 if 判斷條件1 then 條件為真的分支 elif 判斷條件2 then 條件為真的分支 elif 判斷條件3 then 條...

shell指令碼的if判斷語句 案例

if語句 1 按照檔案型別進行判斷 d 檔案 判斷該檔案是否存在,並且是否為字元裝置檔案 是字元裝置為真 e 檔案 判斷該檔案是否存在 存在為真 e root echo 輸出為0 判斷為真,即為0 常用的格式有 e root echo yes echo no 一 單分支if條件語句格式有如下兩種 i...

Shell 判斷語句

檔案判斷運算子 b 當file存在並且是塊檔案時返回真 c 當file存在並且是字元檔案時返回真 d 當pathname存在並且是乙個目錄時返回真 e 當pathname指定的檔案或目錄存在時返回真 f 當file存在並且是正規檔案時返回真 g 當由pathname指定的檔案或目錄存在並且設定了sg...