Shell編程中循環命令用于特定條件下決定某些語句重復執行的控制方式,有三種常用的循環語句:for、while和until。while循環和for循環屬于“當型循環”,而until屬于“直到型循環”。循環控制符:break和continue控制流程轉向。
選擇執行:
if COMMADN;then COMMAND;fi :第一個命令執行成功,就執行第二條命令,否則就退出
多分支:
if 判斷條件 1 ; then
條件為真的分支代碼
elif 判斷條件 2 ; then
條件為真的分支代碼
elif 判斷條件 3 ; then
條件為真的分支代碼
else
以上條件都為假的分支代碼
fi
逐條件進行判斷,第一次遇為“真”條件時,執行其分支,而后結束整個if
case中的 PAT 支持glob風格的通配符:
*: 任意長度任意字符
?: 任意單個字符
[]:指定范圍內的任意單個字符
a|b: a或b
case 變量引用 in #變量引用便是方法: $i 就是變量引用的值
PAT1) #每個分支結束,需要雙引號結束
分支1
;;
PAT2)
分支2
;;
…
)
默認分支
;;
esac
循環執行:
for 變量名 in 列表;do #變量名,比如i, 直接是變量i ,而不是$i
循環體
done
執行機制 :
依次將列表中的元素賦值給“變量名”; 每次賦值后即執行一次循環體; 直到列表中的元素耗盡,循環結束
列表生成方式:
(1) 直接給出列表
(2) 整數列表:
(a) {start..end} #{1..100} {1..100..2} {100..1..1} {100..10..-2}
(b) $(seq [start [step]] end) # seq 100 seq 1 2 100 seq 100 -2 1
使用中括號的列表,步長放在后面
使用seq命令列表,步長放在中間
(3) 返回列表的 命令
$(COMMAND)
(4) 使用glob,如:.sh
(5) 變量引用;
$@, $*
取隨機字符:tr -dc “[:alnum:]” < /dev/urandom |head -c8 |md5sum 表示取幾位字符
取隨機密碼:md5sum
for循環適合使用在關于數字和列表的循環,列表多少就循環多少次
while循環適用于判斷命令成功與否;
打印顏色: echo -e “\033[41m \033[0m” -e 是使轉義符生效
設定顏色 結束符
其中41-45設定背景色,31-35字體顏色
while CONDITION; do
循環體
done
CONDITION:循環控制條件;進入循環之前,先做一次判斷;每一次循環之后會再
判斷;條件為“true” ,則執行一次循環;直到條件測試狀態為“false” 終止循環
因此:CONDTION 一般應該有循環控制變量;而此變量的值會在循環體不斷地被修正
進入條件:CONDITION 為true
退出條件:CONDITION 為false
until CONDITION; do
循環體
done
進入條件: CONDITION 為false
退出條件: CONDITION 為true
循環控制語句continue
用于循環體中
? continue [N] :提前結束第N 層的本輪循環,而直接進入下一輪判斷;最內層為第1層
while CONDTIITON1; do
CMD1
…
if CONDITION2; then
continue
fi
CMD2
done
原創文章,作者:shewei,如若轉載,請注明出處:http://www.www58058.com/71624