流程控制shell
過程式編程語言 順序執行 選着執行 循環執行
條件選擇if語句編程
選擇執行 注意:if語句可嵌套 單分支 if判斷條;then 條件爲真的分支代碼 fi 雙分支: if判斷條件;then 條件爲真的分支的代碼 else 條件爲假的分支代碼 fi
if語句centos
多分支 if 判斷條件1; then 條件1爲真的分支代碼 elif 判斷條件2; then 條件2爲真的分支代碼 elif 判斷條件3; then 條件3爲真的分支代碼 else 以上條件都爲假的分支代碼 fi 逐條件進行判斷,第一次遇爲「真」條件時,執行其分支,然後結束整個if語句
if示例bash
根據命令的退出狀態來執行命令 if ping -c1 -W2 station1 &> /dev/null; then echo 'Station1 is UP' elif grep "station1" ~/maintenance.txt &> /dev/null; then echo 'Station1 is undergoing maintenance‘ else echo 'Station1 is unexpectedly DOWN!' exit 1 fi
條件判斷:case語句編程語言
case 變量引用 in PAT1) 分支1 ;; PAT2) 分支2 ;; ... *) 默認分支 ;; esac case支持glob風格的通配符: *: 任意長度任意字符 ?: 任意單個字符 []:指定範圍內的任意單個字符 a|b: a或b
循環ide
循環執行 將某代碼段重複運行屢次 重複運行多少次 循環次數事先已知 循環次數事先未知 有進入條件和退出條件 for, while, until
for循環測試
for 變量名 in 列表;do 循環體 done for i[i表明變量名] in {1..10};【in後面跟的是列表】do userdel -r user$i; done 【do和done中間的是循環體】 執行機制: 依次將列表中的元素賦值給「變量名」; 每次賦值後即執行一次循環體; 直 到列表中的元素耗盡,循環結束 例:[root@centos18:11:44bin]#sum=0; for num in 1 23 4 6 4;do sum=$[sum+num]; done; echo sum=$sum sum=38 [root@centos18:12:58bin]#for num in 1 23 4 6 4;do echo "num=$num";done num=1 num=23 num=4 num=6 num=4 [root@centos18:13:24bin]#sum=0; for num in {1..100};do sum=$[sum+num]; done; echo sum=$sum sum=5050 [root@centos18:16:24bin]#sum=0; for num in `seq 10`;do sum=$[sum+num]; done; echo sum=$sum sum=55 [root@centos18:16:47bin]#sum=0; for num in {1..100..2};do sum=$[sum+num]; done; echo sum=$sum sum=2500 例:算出1到100 和 [root@centos18:27:29bin]#sum=0; for i in {1..100};do sum=$[sum+i];done;echo sum=$sum sum=5050 [root@centos18:27:44bin]#sum=0; for i in `seq 1 2 100`;do sum=$[sum+i];done;echo sum=$sum sum=2500
for循環code
列表生成方式: (1) 直接給出列表 (2) 整數列表: (a) {start..end} (b) $(seq [start [step]] end) (3) 返回列表的命令 $(COMMAND) (4) 使用glob,如:*.sh (5) 變量引用; $@, $*
while 循環it
while CONDITION; do 循環體 done CONDITION:循環控制條件;進入循環以前,先作一次判斷;每一次循環以後 會再次作判斷;條件爲「true」,則執行一次循環;直到條件測試狀態爲 「false」終止循環 所以:CONDTION通常應該有循環控制變量;而此變量的值會在循環體不斷地 進入條件:CONDITION爲true 退出條件:CONDITION爲false
until循環io
until CONDITION; do 循環體 done 進入條件: CONDITION 爲false 退出條件: CONDITION 爲true
循環控制語句continue
用於循環體中 continue [N]:提早結束第N層的本輪循環,而直接進入下一輪判斷;最內層爲 第1層 while CONDTIITON1; do CMD1 ... if CONDITION2; then continue fi CMDn ... done
循環控制語句break
用於循環體中 break [N]:提早結束第N層循環,最內層爲第1層 while CONDTIITON1; do CMD1 ... if CONDITION2; then break fi CMDn ... done
循環控制shift命令
shift [n] 用於將參量列表 list 左移指定次數,缺省爲左移一次。 參量列表 list 一旦被移動,最左端的那個參數就從列表中刪除。while 循環遍 歷位置參量列表時,經常使用到 shift ./doit.sh a b c d e f g h ./shfit.sh a b c d e f g h
示例:doit.sh
#!/bin/bash # Name: doit.sh # Purpose: shift through command line arguments # Usage: doit.sh [args] while [ $# -gt 0 ] # or (( $# > 0 )) do echo $* shift done 示例:shift.sh #!/bin/bash #step through all the positional parameters until [ -z "$1" ] do echo "$1" shift done echo
建立無限循環
while true; do 循環體 done until false; do 循環體 Done