shell編程中的控制判斷語句
阿新 • • 發佈:2017-10-25
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編程中的控制判斷語句