Shell腳本之進階
1.1 if語句用法及實例
當我們在腳本中遇到需要判斷的時候,我們就可以用if語句來實現。具體的語法如下:
單分支
if 判斷條件;then
條件為真的分支代碼
fi
雙分支
if 判斷條件; then
條件為真的分支代碼
else
條件為假的分支代碼
fi
多分支
if 判斷條件1; then
條件為真的分支代碼
elif 判斷條件2; then
條件為真的分支代碼
elif 判斷條件3; then
條件為真的分支代碼
else
以上條件都為假的分支代碼
fi
在多分支中,系統會逐條判斷你寫入的條件,第一次遇到“真”條件時,執行該分支,而後結束整個if語句。
註意:1、if和fi是成對出現的
2、if語句可以嵌套。
舉例子:比較兩個數的大小
執行結果如圖:
1.2 case用法及實例
當涉及到多個條件匹配的時候,我們用if可能就很麻煩了,這個時候,我們就可以用case來編寫這個腳本。case的具體語法如下:
case 變量引用 in
PAT1)
分支1
;;
PAT2)
分支2
;;
...
*)
默認分支
;;
esac
註意:1、case每一個分支後,都是以兩個“;”結尾的(最後一個可以省略)
2、case和esac是成雙成對的 舉例子:編寫一個腳本,提示用戶輸入信息,判斷其輸入的是yes或no或其他信息。 ![](http://i2.51cto.com/images/blog/201803/24/4355fb2065ecc51680a902626cd4dcb7.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) 執行結果: ![](http://i2.51cto.com/images/blog/201803/24/ad8d2cdec31424863caf3bc06a8e6eff.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) 二、循環語句 2.1 for循環
for循環的執行機制是:一次將列表中的元素賦值給“變量名”;每次賦值後即執行一次循環體;直到列表中的元素耗盡,循環結束。基本的語法有兩種:
1)for 變量名 in 列表 ; do
循環體
done
關於列表的生成方法,如下:
①直接給出列表
②整數列表:
(a){start…end}
(b)seq start end
③返回列表的命令
$(COMMAND)
④使用glob通配符如:
*.sh
⑤變量引用
$i,$*
2)for (( exp1; exp2; exp3 )); do
循環體
done
更清晰的可以從下圖中看出:
舉例子:
打印九九乘法表
執行結果:
2.2 while循環
while循環比for循環略復雜一些,具體語法如下:
while CONDITION; do
循環體
done
註意:1、進入條件:CONDITION為true;退出條件:CONDITION為false。
2、CONDITION為循環控制條件:進入循環之前,先做一次判斷;每一次循環之後會再次做判斷;條件為“true”,則執行一次循環;知道條件測試狀態為“false”終止循環。
3、CONDITION一般應該有循環控制變量;此變量的值會在循環體不斷地被修正。
舉例子:計算100以內所有正奇數之和
執行結果:
2.3 until循環
until循環的語法和while的語法類似,但是進入和退出的條件卻剛好相反,所以不常用,只要我們了解即可。具體語法如下:
until CONDITION; do
循環體
done
註意:1、進入條件:CONDITION為false;退出條件:CONDITION為true。
2、do和done成對出現。
舉例子:循環輸出1-10
![](http://i2.51cto.com/images/blog/201803/24/770011052148f526d1dd99d373b960bf.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
執行結果:
![](http://i2.51cto.com/images/blog/201803/24/0561e0380be7bcc3277c839ce466b3b7.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
4 select循環
select循環主要用於創建菜單,按數字順序排列的菜單項將顯示在標準錯誤上,並顯示PS3提示符,等待用戶輸入。
用戶輸入菜單列表中的某個數字,執行相應的命令。
用戶輸入被保存在內置變量REPLY中。
select的具體語法如下:
select variable in list; do
循環體命令
done
註意:①select是個無線循環,因此要記住用break命令退出循環,或用exit命令終止腳本。也可以按ctrl+c退出循環。
②select經常和case聯合使用。
③與for循環類似,可以省略in list,此時使用位置變量。
舉例子:生成菜單,並顯示選中的價錢。
執行結果:
最後告訴大家,腳本這東西要先了解語法規則,多練習,才會融會貫通。
Shell腳本之進階