一、 條件測試結構 if then else 語句
Shell Script中if語句的條件部分要以分號來分隔。[]表示條件測試,常用的條件測試有下面幾種:
[ -f "$file" ] 判斷$file是否是一個文件
[ $a -lt 3 ] 判斷$a的值是否小於3,同樣-gt和-le分別表示大於或小於等於
[ -x "$file" ] 判斷$file是否存在且有可執行權限,同樣-r測試文件可讀性
[ -n "$a" ] 判斷變量$a是否有值,測試空串用-z
[ "$a" = "$b" ] 判斷$a和$b的取值是否相等
[ cond1 -a cond2 ] 判斷cond1和cond2是否同時成立,-o表示cond1和cond2有一成立
[ -r ] 選項檢查文件是否可讀
! 表示取反
if 條件1 #如果條件1為真
then #那麼
command1 #執行命令1
elif 條件2 # 如果條件2為真 // {多級比較(應注意與嵌套條件分支區分)}
then #那麼
command2 # 執行命令2
else #如果條件1和條件2都不成立
command3 執行命令3
fi #完成(if 語句一定要以fi結束)
舉例說明:
if [ "13" -lt "11"] #如果13小於11
then #那麼
echo "13<11" #輸出"13<11"
elif["13" -lt "12"] #如果13小於12
then # 那麼
echo "13<12" #輸出"13<12"
else #否則
echo "13>=12" #輸出"13>=12"
二、case語句:
在shell中的case結構與C/C++中的switch結構是相同的。它允許通過判斷來選擇代碼塊中多 條路徑中的一條。它的作用和多個if/then/else語句的作用相同,是它們的簡化結構,特別 適用於創建菜單。case塊以esac(case的反向拼寫)結尾。
case 值 in
模式1) #如果模式1匹配
命令1 #執行命令1 ;;
模式2) #如果模式2匹配
命令2 #執行命令2 ;
*) #如果以上模式都不匹配
命令3 #執行命令3 ;
esac #結束case語句
case取值後面必須為單詞in,每一模式必須以右括號結束。取值可以為變量或常數。匹配發現取值符合某一模式後,其間所有命令開始執行直至;;。模式匹配符號*表示匹配任意字符。[。。]表示類或者範圍中的任意字符。
舉例說明:
case $A in
1) #如果A的值為1
echo "A =1" #輸出“A=1” ;
2) #如果A的值為2
echo "A=2" #輸出“A=2” ;
[34]) #如果A的值為3或4
echo "A=3|4" #輸出“A=3|4” ;
esac #結束