指令碼迴圈基礎(2)

b10l07發表於2017-10-10

迴圈控制語句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


特殊用法

while迴圈的特殊用法(遍歷檔案的每一行):

while read line; do

迴圈體

done < /PATH/FROM/SOMEFILE

依次讀取/PATH/FROM/SOMEFILE檔案中的每一行,且將行賦值給變數line


select迴圈與選單

select variable in list

do

迴圈體命令

done

select 迴圈主要用於建立選單,按數字順序排列的選單項將顯示在標準錯誤上,並顯示PS3 提示符,等待使用者輸入

使用者輸入選單列表中的某個數字,執行相應的命令

使用者輸入被儲存在內建變數REPLY 中


select 是個無限迴圈,因此要記住用break 命令退出迴圈,或用exit 命令終止指令碼。也可以按ctrl+c 退出迴圈

select 經常和case 聯合使用

與for 迴圈類似,可以省略in list,此時使用位置參量


訊號捕捉trap

trap '觸發指令' 訊號

自定義程式收到系統發出的指定訊號後,將執行觸發指令,而不會執行原操作

trap '' 訊號

忽略訊號的操作

trap '-' 訊號

恢復原訊號的操作

trap -p

列出自定義訊號操作

相關文章