shell程式設計中的控制判斷語句

myLittleGarden發表於2017-10-24

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        或  
!        非

 

相關文章