1. 程式人生 > >shell進階

shell進階

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進階