bash腳本編程(4)編程
case選擇分支結構:bash
case: case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esacide
在腳本中使用的case的結構:spa
case WORD in //WORD應該是一個變量,若其不是變量,那麼他只能匹配到其自己設計
PATTERN1) //被匹配到的選項後面須要加一個小括號,表示一樣功能的選項能夠用或字符隔開it
COMMANDio
...class
;; //在執行完匹配後的命令後,須要用 ;;結尾變量
PATTERN2)可視化
COMMAND
...
;;
...
esac //與if類似,case語句的結束的標誌爲esac
示例:
①當WORD爲變量時
#!/bin/bash cs=$1 #經過用戶輸入$1參數值,並賦值給變量cs case $cs in #一樣case命令引用變量時須要用$ 符號 n|name) echo "name:wang" ;; c) echo "constellation:aquarius" ;; esac [root@localhost ~]# bash ceshi3 n name:wang [root@localhost ~]# bash ceshi3 c constellation:aquarius [root@localhost ~]# bash ceshi3 name name:wang
②當WORD爲非變量時
#!/bin/bash case cs in n|name) echo "name:wang" ;; cs) echo "constellation:aquarius" ;; esac [root@localhost ~]# bash ceshi3 constellation:aquarius 最終cs只能匹配到cs選項
PATTERN(模式)能夠是下列幾類字符:
1.普通的文本字符;
2.Globbing風格的通配符;
*:任意長度的任意字符
?:任意單個字符;
[]:指定範圍內的任意單個字符;
[^]:指定範圍之外的任意單個字符;
3.| :或字符
循環::::::
while循環結構
while: while COMMANDS; do COMMANDS; done
在腳本中能夠寫成下列結構:
while CONDITION ; do
COMMANDS
done
while循環進入循環的條件:CONDITION邏輯判斷結果爲真;
while循環退出循環的條件:CONDITION邏輯判斷結果爲假;
until循環結構
until: until COMMANDS; do COMMANDS; done
在腳本中能夠寫成下列結構:
until CONDITION ; do
COMMANDS
done
until循環進入循環的條件:CONDITION邏輯判斷結果爲假;
until循環退出循環的條件:CONDITION邏輯判斷結果爲真;
注意:
1.while CONDITION 至關於 until ! CONDITION
2.while和until循環結構中,沒有變量自增或自減的變化方法,所以須要使用語句手動給出變量的變化方式;
3.while和untile循環都須要有明確的結束條件,否則會進入無限的死循環中
示例:
設計腳本計算1-100之間的和
#!/bin/bash declare i=0 declare sum1=0 while [ $i -lt 100 ];do let i++ let sum1=$[sum1+i] done echo $sum1 [root@localhost ~]# bash sum 5050 #!/bin/bash declare i=0 declare sum1=0 until [ $i -eq 100 ];do let i++ let sum1=$[sum1+i] done echo $sum1 ~ [root@localhost ~]# bash sum 5050
循環控制語句:
循環控制語句:
continue
提早結束當前循環,直接進入下一輪條件判斷,若是條件判斷結果仍然知足循環進入條件,則開啓下一輪循環;
break
提早結束當前的循環,並且再也不繼續後續循環;
#!/bin/bash declare i=0 declare sum1=0 until [ $i -eq 100 ];do let i++ if [ $i -eq 50 ];then #當i=50 時進行下面命令 continue #跳過當前循環並進入下一輪判斷 fi let sum1=$[sum1+i] done echo $sum1 [root@localhost ~]# bash sum 5000 最後結果 1-100全部數字和減去50 #!/bin/bash declare i=0 declare sum1=0 until [ $i -eq 100 ];do let i++ if [ $i -eq 50 ];then #當i=50 時進行下面命令 break #結束循環 fi let sum1=$[sum1+i] done echo $sum1 [root@localhost ~]# bash sum 1225 最後獲得1-49之間全部整數的和
select循環結構
select NAME [in WORDS ... ];do
COMMANDS
done
select循環也是一種遍歷列表的方式建立一個可視化菜單,每一個列表項都有一個數字編號與之對應,供用戶選擇使用;而用戶只須要選擇其編號便可;
select是一種默認無限循環結構,所以,必須在循環體中爲select提供退出循環的條件,一般可使用break或exit命令實現
示例:
#!/bin/bash select i in a b c d;do echo $i done [root@localhost ~]# bash sum 1) a 2) b 3) c 4) d #? 1 a #? 2 b #? 3 c #? 4 d #? ^C # 由於是無限循環因此使用Ctril+c 結束命令 [root@localhost ~]#
一般咱們將select和case命令聯合使用,以便退出