shell進階
◆ 條件選擇 if語句
單分支
if 判斷條件;then
條件為真的分支代碼
fi
雙分支
if 判斷條件; then
條件為真的分支代碼
else
條件為假的分支代碼
fi
多分支
if 判斷條件 1 ; then
條件為真的分支代碼
elif 判斷條件 2 ; then
條件為真的分支代碼
elif 判斷條件 3 ; then
條件為真的分支代碼
else
以上條件都為假的分支代碼
Fi
註意:if 語句可進行嵌套
◆條件判斷:case 語句
case 變量引用 in
PAT1)
分支1
;;
PAT2)
分支2
;;
*)
默認分支
;;
esac
◆ for 循環
語法:for 變量名 in 列表;do
循環體
done
執行機制 :依次 將列表中的元素賦值給“變量名”; 每次賦值後即執行一次循環體; 直到列表中的元素耗盡,循環結束。
列表生成方式:
(1) 直接給出 列表
(2) 整數列表:
(a) {start..end}
(b) $(seq [start [step]] end)
(3) 返回列表的 命令
$(COMMAND)
(4) 使用glob, , 如:*.sh
(5) 變量引用;[email protected], $*
for循環的特殊格式
for (( 控制變量初始化; 條件判斷表達式; 控制變量的修正表達式))
do
循環體
done
控制變量初始化:僅在運行到循環代碼段時執行一次
控制變量的修正表達式:每輪循環結束會先進行控制變量修正運算,而後再做條件判斷
例如:
For ((i=1;sum=0;i<=100;i++));do
[ $[i%2] –eq 1 ]&& sum+=i
Done
Echo sum=$sum
◆ while 循環
while CONDITION; do
循環體
done
進入條件:CONDITION 為true
退出條件:CONDITION 為false
while 循環的特殊用法(遍歷文件的每一行):
while read line;do
循環體
done </PATH/FROM/SOMEFILE
依次讀取/PATH/FROM/SOMEFILE文件中的每一行,且將行賦值給變量line
◆ until 循環
until CONDITION; do
循環體
done
進入條件: CONDITION 為false
退出條件: CONDITION 為true
continue:結束本輪循環,進入到下一輪循環。
break:結束本次循環
◆ shift命令
用於將參量列表 list 左移指定次數,缺省為左移一次。
參量列表 list 一旦被移動,最左端的那個參數就從列表中刪除。whil到循環遍歷位置參量列表時,常用到 shift。
一般用於參數不確定的情況下
◆創建無限循環
while true; do
循環體
done
until false; do
循環體
Done
◆select 循環與菜單
select variablein list
do
循環體命令
done
select
本文出自 “13162732” 博客,請務必保留此出處http://13172732.blog.51cto.com/13162732/1966086
shell進階