Shell Script if 條件判斷

本篇 ShengYu 介紹 Shell Script if 條件判斷式,常常在 Shell Script 腳本裡會需要判斷一些條件,但這些條件不單單只是數字比對、字串比較,還會有其他判斷,例如:對檔案的判斷,有時候日子久了也會忘記一些檔案判斷的寫法,也順便紀錄一下當作備忘。以下 Shell Script 除了介紹一下 if 語法介紹外,還會列出各種使用情境與常用的判斷式。

以下 Shell Script if 條件判斷的用法與範例將分為這幾部份,

  • Shell Script if 語法介紹與範例
  • Shell Script if 常用的判斷式
  • Shell Script if 常用範例

那我們開始吧!

Shell Script if 語法介紹與範例

Shell Script 使用 if 條件判斷語法要注意 [ ] 中括號的兩端內側必須要有一個空白字元,且最後必須使用 fi 結尾,以下範例介紹 Shell Script if 的用法,以及比較二個字串是否相等。

範例1-1:if 寫法

Shell Script 最簡單的 if 條件判斷式寫法,範例如下,

if.sh
1
2
3
if [ 'xxx' == 'xxx' ]; then
# do something
fi

也可以將 then 換到下一行那就不用加 ; 分號了,如下所示,

1
2
3
4
if [ 'xxx' == 'xxx' ]
then
# do something
fi

這邊舉個範例,Shell Script 用 if 判斷兩個字串是否相同,

1
2
3
4
5
STR1="apple"
STR2="apple"
if [ "$STR1" == "$STR2" ]; then
echo "Yes"
fi

範例1-2:if else 寫法

if 加上 else 條件判斷式寫法,範例如下,

if-else.sh
1
2
3
4
5
if [ 'xxx' == 'xxx' ]; then
# do something
else
# do something
fi

這邊舉個範例,Shell Script 用 if 加上 else 判斷兩個字串是否相同,

1
2
3
4
5
6
7
STR1="apple"
STR2="lemon"
if [ "$STR1" == "$STR2" ]; then
echo "Yes"
else
echo "No"
fi

範例1-3:if, else if, else 寫法

Shell Script if 的多重條件寫法,範例如下:

if-else-if.sh
1
2
3
4
5
6
7
if [ 'xxx' == 'xxx' ]; then
# do something
elif [ 'xxx' == 'xxx' ]; then
# do something
else
# do something
fi

Shell Script if 常用的判斷式

這邊介紹 Shell Script if 常用的判斷式,

表格1:檔案判斷

判斷檔案是否存在,判斷目錄是否存在,這兩個算是最常用到的寫法,其他幾種也一併列出來。

判斷式 說明 備註
-e <file> 檔名是否存在
-f <file> 檔名是否存在且為檔案
-d <file> 檔名是否存在且為目錄
-x <file> 檔名是否存在且可執行
-L <file> 是否為軟連結
-S <file> 檔名是否存在且為socket

表格2:數字比較

偶爾會使用到數字比對,語法如下所示。

判斷式 說明 備註
"$a" -eq "$b" 兩數字是否相等
"$a" -ne "$b" 兩數字是否不相等
"$a" -gt "$b" a是否大於b
"$a" -ge "$b" a是否大於等於b
"$a" -lt "$b" a是否小於b
"$a" -le "$b" a是否小於等於b

表格3:字串比較

字串比對也是很長使用到的功能,以下整理為常用的寫法,這裡需注意前兩個的寫法都是一樣的。

判斷式 說明 備註
"$str1" = "$str2" 兩字串是否相等
"$str1" == "$str2" 兩字串是否相等
"$str1" != "$str2" 兩字串是否不相等
-n "$str1" 字串長度是否不為0
-z "$str1" 字串長度是否為0

表格4:多重條件比較

多重條件比較這個偶爾會用到,也是整理列出來。

判斷式 說明 備註
條件1 -a 條件2 條件1和條件2都成立時
條件1 -o 條件2 條件1或條件2成立時

Shell Script if 常用範例

這邊介紹 Shell Script if 常用範例,

範例2:判斷是否為檔案

Shell Script 判斷 somefile 是否為檔案,

file-exist1.sh
1
2
3
if [ -f somefile ]; then
echo "Yes"
fi

也可以寫成下面這種,

file-exist2.sh
1
2
3
if test -f somefile; then
echo "Yes"
fi

範例3:判斷是否為目錄

Shell Script 判斷 somedir 是否為目錄,

dir-exist.sh
1
2
3
if [ -d somedir ]; then
echo "Yes"
fi

以上就是 Shell Script if 條件判斷的用法與範例介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!
下一篇介紹 for 迴圈

其它相關文章推薦
Shell Script 新手入門教學
Shell Script 四則運算,變數相加、相減、相乘、相除
Shell Script for 迴圈
Shell Script while 迴圈
Shell Script 讀檔,讀取 txt 文字檔
Shell Script 判斷檔案是否存在