1. 程式人生 > >shell編程中的控制判斷語句

shell編程中的控制判斷語句

while 結束 關鍵詞 屬性 cas 控制 字符 spa else

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

shell編程中的控制判斷語句