條件式的測試標的物
 
   
一般程式語言一定有條件式用來控制流程,而最常見的測試是比對兩個數值、 兩個字串或兩個物件,而比對條件則是「相等」、「大於」、「小於」 、「不等」等。 作為一個程式語言,Shell 當然也提供數值與字串的比較。 但是,Shell 的強項並非數值運算,而是檔案與程序的處理。最需要下列相關測試: 檔案是否存在?讀寫權限為何?子程序的執行是否成功?等等。 Shell 提供一個內建指令,test,作為種種測試之用。(為了符合一般的使用習慣,測試指令 可用方括弧 ' [ 測試條件 ]' 取代)。 測試的條件以 'test' 指令的 option 的型態給定。 'test' 指令的執行成功與否,提供給 流程控制使用。
 
   
簡單的說,一個指令執行如果是成功的,其回傳的 Status 為0, 否則為其他數值。而條件式的測試標的物,就是回傳的 Status。
 
   
以下是可以一看即知的簡單實例:
data1=4
data2=6

if [ $data1 -eq 4 ]
then 
   echo "Data1 is 4"
fi

if test $data2 -ne 6
then 
   echo "Data2 is not 6"
fi
上面的script 可以改寫成比較簡潔美觀的 script 如下:
data1=4
data2=6
[ $data1 -eq 4 ] && echo "Data1 is 4"
[ $data2 -eq 6 ] || echo "Data2 is not 6"
其中,'&&'這個符號的意思是 前面指令執行的結果如果是成功的,就執行後面的指令。 而'||'這個符號的意思是 前面指令執行的結果如果是失敗的,就執行後面的指令。 這樣的寫法,更簡單清楚,更容易分析與維護, 在後面的章節中會再解釋。
 
   
使用者在撰寫一個 script 時,是可以利用 'exit n' 將 Status 設定為 n。當然正常使用者應該不會在執行成功時,將 Status 設定為 0 以外的值。 舉例如下:
echo "Success"
exit 0
echo "Failure"
exit 4
Man Page of 'exit'

Web Page Copyright: 亞洲大學資訊電機學院 連耀南 yaonanlien@asia.edu.tw  flow0.htm,  Thu Sep 7 16:18:54 CST 2023