1. 程式人生 > >while,until,select循環

while,until,select循環

循環

case分支選擇結構:
case 詞 in [模式 [| 模式]...) 命令 ;;]... esac
case 變量引用 in
模式1)
分支1
;;
模式2)
分支2
;;
...
*)
默認分支
;;
esac

模式(PATTERN):
1.普通的文本字符
2.globbing風格的通配符:
*:任意長度任意字符
?:任意的單個字符
[]:範圍內的任意單個字符
[^]:範圍外的任意單個字符
3.|:或

if的多分支結構和case的分支結構之間的區別:
相同點:
1.都是條件為真,執行對應分支的語句;條件為假,就不執行;
2.都可以設置默認分支語句,即:所有條件都不匹配的時候,所執行的語句;

不同點:
1.if是根據命令的執行狀態返回值來判斷正確與否;case是根據變量的值的取值內容是否匹配模式來判斷正確與否;
2.case的每個分支都必須使用‘;;‘結束;

while
while 命令; do 命令; done
while CONDITION ; do
循環體
done
進入循環條件:CONDITION一直為真;
退出循環條件:CONDITION為假;

until
until 命令; do 命令; done
until CONDITION ; do
循環體
done
進入循環條件:CONDITION一直為假;
退出循環條件:CONDITION為真;

while CONDITION ; do CMD ; done

相當於
until ! CONDITION ; do CMD ; done

註意:對於while和until兩個循環結構來講,如果要實施變量增量操作,必須手動給出;

循環控制語句:
continue
break

continue:
continue [n]
提前結束第n層的本次循環,直接進入下一輪條件判斷,若符合循環進入條件,則開啟下一輪循環;

break:
break [n]
提前技術第n層循環;不再繼續後續循環;

無限循環用法:
while true ; do
循環體
done

until false ; do
循環體
done

在此類的循環結構中,必須適當的使用continue和break,以保證循環不會一直持續下去;

能夠實現遍歷功能的while循環和until循環;
while read LINES ; do
循環體
done < /PATH/FROM/SOMEFILE

until ! read LINES ; do
循環體
done < /PATH/FROM/SOMEFILE

select
select循環主要用於創建一個菜單式列表,供用戶進行選擇;
列表是按照數字順序排列的,我們只要選擇數字即可;

一般來講,select與case一起使用;

select是一個無限循環結構,因此,必須在循環體中使用break命令以退出循環,或者可以使用exit命令直接終止腳本運行;

select NAME [in 詞語 ... ;] do 命令; done

select NAME [in LIST] ; do
命令
done


while,until,select循環