if
- 單格式與巢狀
if 條件表示式;then #當條件為真時執行以下語句 命令列表 else #為假時執行以下語句 命令列表 fi if 語句也可以巢狀使用 if 條件表示式1;then if 條件表示式2;then 命令列表 else if 條件表示式3;then 命令列表 else 命令列表 fi fi else 命令列表 fi
- 多分支格式
if test -f "$1" ;then lpr $1 elif test -d "$1";then #elif 同else if (cd $1;lpr $1) else echo "$1不是檔案或目錄" fi
case
case $newval in 1) #這裡是可能值1 echo 1 ;; #表示第一個分支結束 2) #這裡是可能值 2 echo 2 ;; #第二個分支結束 *) #表示其他可能值,必須在最後,否則他後面的語句無法執行 echo unkown esac #case 語句結束
while /until
while 表示式 do 命令列表 done Sum=0 i=0 while true #true是系統的關鍵詞 表示真 do i=`expr $i + 1` Sum=`expr $Sum + $i` if [ $i = "100" ]; then break; fi done echo $i $Sum 最後這個程式顯示的是 100 5050
下面將這個程式再改動一下
Sum=0 i=0 while [ $i != "100" ] do i=`expr $i + 1` Sum=`expr $Sum + $i` done echo $i $Sum 改動後的程式運算結果和上面是一樣 但程式比上面的要簡練 在這個迴圈中還可以以until做為測試條件 它正好與while測試的條件相反,也就是當條件為假時將繼續執行迴圈體內的語句,否則就退出迴圈體,下面還用這個例子. Sum=0 i=0 until [ $i = "100" ] do i=`expr $i + 1` Sum=`expr $Sum + $i` done echo $i $Sum 當i不等於100時迴圈 就是當條件為假時迴圈,否則就退出,而第一個例子是當i不等於100 時迴圈,也就是測試條件為真時迴圈.
for
- 列舉用法
for 變數 in 名字列表 do 命令列表 done for n in {1..10} do echo $n done for letter in a b c d e; do echo $letter done
- 檔案用法
for file in * do echo $file done for File in a1 a2 a3 a4 a5 do diff aa/$File bb/$File done
- 累加格式
for (( i=1;$i<10;i++ )) do echo $i done for(( i=1;$i<10;i=$[`expr $i + 1`] )) do echo $i done
其他迴圈控制語句
break 命令不執行當前迴圈體內break下面的語句從當前迴圈退出.
continue 命令是程式在本循體內忽略下面的語句,從迴圈頭開始執行.
判斷檔案的屬性
格式:-操作符 filename -e 檔案存在返回1, 否則返回0 -r 檔案可讀返回1,否則返回0 -w 檔案可寫返回1,否則返回0 -x 檔案可執行返回1,否則返回0 -o 檔案屬於使用者本人返回1, 否則返回0 -z 檔案長度為0返回1, 否則返回0. -f 檔案為普通檔案返回1, 否則返回0 -d 檔案為目錄檔案時返回1, 否則返回0
測試字串
字串1 = 字串2 當兩個字串相等時為真 字串1 != 字串2 當兩個字串不等時為真 -n 字串 當字串的長度大於0時為真 -z 字串 當字串的長度為0時為真 字串 當串字串為非空時為真
測試兩個整數關係
數字1 -eq 數字2 兩數相等為真 數字1 -ne 數字2 兩數不等為真 數字1 -gt 數字2 數字1大於數字2為真 數字1 -ge 數字2 數字1大於等於數字2為真 數字1 -lt 數字2 數字1小於數字2為真 數字1 -le 數字2 數字1小於等於數字2為真
邏輯測試
-a 與 -o 或 ! 非