if, for, while幾乎是所有程式語言的關鍵字,在Shell程式設計中也不例外,其中if是使用頻率最高的,由於Shell程式設計中不存在物件(Object)的概念,因此在if的比較判斷中主要是對字串、數字的值進行比較判斷的:

一. if的基本語法
1. if與[之間要有空格
2. []與判斷條件之間也必須有空格
3. ]與;之間不能有空格

二. 對字串的判斷
1. if [ str1=str2 ];then fi #當兩個字串相同時返回真
2. if [ str1!=str2 ];then fi #當兩個字串不相等時返回真
3. if [ -n str1 ];then fi #當字串的長度大於0時返回真 (判斷變數是否有值)
4. if [ -z str1 ];then fi #當字串的長度為0時返回真

三. 對數字的判斷
1. int1 -eq int2 #int1和int2相等
2. int1 -ne int2 #int1不相等int2
3. int1 -gt int2 #int1大於int2
4. int1 -ge int2 #int1大於等於int2
5. int1 -lt int2 #int1小於int2
6. int1 -le int2 #int1小於等於int2

四. 對檔案屬性的判斷
1. -r file #使用者可讀為真
2. -w file #使用者可寫為真
3. -x file #使用者可執行為真
4. -f file #檔案存在且為正規檔案為真
5. -d file #如果是存在目錄為真
6. -c file #檔案存在且為字元裝置檔案
7. -b file #檔案存在且為塊裝置檔案
8. -s file #檔案大小為非0為真,可以判斷檔案是否為空
9. -e file #如果檔案存在為真

五. 邏輯判斷
1. -a #與
2. -o #或
3. ! #非