日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux脚本打印循环次数,shell脚本编程基础(3)——循环用法

發布時間:2023/12/4 linux 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux脚本打印循环次数,shell脚本编程基础(3)——循环用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本節索引:

一、if、case條件判斷

二、for、while及until循環

三、循環控制語句continue、break、shift及select菜單

四、信號捕捉trap

在前面的基礎編程內容中,我們已經學習了shell腳本的順序執行及選擇執行,通過這兩種方式,可

以幫我們解決一些簡單需求,但要想在更復雜的場景中使用的話,就需要掌握循環執行的方式了。

一、if、case條件判斷

條件判斷if語句:

if語句是指編程語言中用來判定所給定的條件是否滿足,根據判定的結果(真或假)決定執行

給出的兩種操作之一。

格式:

if? 判斷條件1;then

條件1為真的分支代碼

elif判斷條件2;then

條件2為真的分支代碼

elif 判斷條件3;then

條件3為真的分支代碼

else

以上條件都不滿足的分支代碼

fi

if語句會逐條件的進行判斷,當第一次遇到為“真”的條件時,就會執行其分支代碼,而后結束整個if語句。

條件判斷case語句:

case語句是實現選擇結構程序設計的一種語句,比較適合處理離散型變量。

格式:

case 變量引用 in

1|2|3)

cmd1

;;

4|5|6)

cmd2

;;

7|8|9)

cmd3

;;

*)

cmd4

esac

注意:case支持glob風格的通配符:

如:*????? 表示任意長度任意字符

???? 表示任意單個字符

[]????? 指定范圍內的任意單個字符

a|b??? a或者b

二、for、while及until循環

循環執行

將某代碼段重復運行多次

重復運行多少次

次數已知

次數未知

有進入條件和退出條件

循環主要語句有:for、whlie、until

for循環

for語句將循環一個列表中的每一個元素執行一次循環體代碼,直到列表中元素全部執行過一次。

一般用于次數預先知道的循環。

格式1:

for 變量名 in 列表;do

循環體

done

其中列表的生成方式有多種:

1.直接給出列表

2.整數列表:

(a){start..end[..step]}

(b)$(seq[start[step]end])

3.返回列表的命令:

$(COMMAND)

4.使用glob,如:*.sh

5.變量引用:

$@,$*等

執行機制:

依次將列表中的元素賦值給“變量名”,每次賦值后即執行一次循環體;直到列表中的

元素全部被執行,循環結束

格式2:C語言風格

for ((: for (( exp1; exp2; exp3 )); do COMMANDS; done

Arithmetic for loop.

Equivalent to

(( EXP1 ))

while (( EXP2 )); do

COMMANDS

(( EXP3 ))

done

例:利用for循環依次讀取列表{1..100}中的內容,并相加,得出1到100的數字之和

while循環

while結構循環為當型循環(when type loop),一般用于不知道循環次數的情況。維持循環的是一個條件表達式,條件成立執行循環體,條件不成立退出循環。

格式:

while 循環控制條件;do

循環體

done

循環控制條件:進入循環之前,先做一次判斷;每次循環之后會再次做判斷;當條件為True時,則繼續執行循環;直到條件測試狀態為false時終止循環。

例:利用while循環,定義變量i=0,當i小于100時,執行循環,并讓變量i每執行一次循環加1,直到i=100時停止循環,得出數字1到100之和

while循環的特殊用法(遍歷文件的每一行):

while read line; do

循環體

done < /PATH/FROM/SOMEFILE

依次讀取/PATH/FROM/SOMEFILE文件中的每一行,且將行賦值給變量line

for循環與while循環的區別:

for循環與while循環是可以相互替代的;比如:

for i in {1..10};do

echo “OK”

done

用while語句來寫的話:

i=1

while [ $i -le 10 ];do

echo “OK”

let i++

done

兩者意思都是打印10次“OK”,那什么時候用for循環,什么時候又用while循環呢?

for循環用于針對集合中的每個元素的一個代碼塊,而while循環不斷的運行,直到指定的條件不滿足為止。

一般來說:

for循環比較適合循環次數確定的情況

while循環適合循環次數不確定的情況

until循環

維持循環的也是一個條件表達式,但與while用法正好相反,條件不成立時執行循環體,條件成立時退出循環。

until 循環控制條件;do

循環體

done

until語句和while語句可相互轉化:

如:until [ test ];do? 等價于 while [ ! test ];do

三、循環控制語句continue、break、shift

continue語句

用于循環體中

continue[N]:提前結束第N層的本輪循環,而直接進入下一輪判斷;最內層為第1層

格式:

while 循環控制條件;do

CMD1

if 判斷條件;then

continue

fi

CMDn

done

例:依次打印數字1至10,當continue出現在5循環中時,直接跳過,繼續執行6循環;

當continue出現在嵌套循環中時,continue 2,提前結束第二次本輪循環,并打印3次

break語句

用于循環體中

break[N]:提前結束第N層循環,最內層為第一層

while 循環控制條件;do

CMD1

if 判斷條件;then

break

fi

CMDn

done

例:break語句將直接結束本輪循環

shift命令

shift[n]:將參量列表list左移指定次數,缺省為左移一次,適合用于處理位置參數

參量列表list一旦被移動,最左端的那個參數就從列表中刪除。while循環遍歷位置參量列表時,

常用到shift

例1:利用shifit,每次位置變量向左移動1位,并打印本次全部位置變量,直到位置變量為0個

例2:利用shifit,每次變量向左移動一位,并打印本次第一個位置變量,直到位置變量小于1時停止執行

避免出現無限循環:

while true;do

循環體

done

until false;do

循環體

done

每個程序員都會偶爾不小心而編寫出無限循環,在循環退出條件比較微妙時尤其如此,如果程序陷入無限循環,可按ctrl+c退出

要避免編寫無限循環,務必對每個while、until循環進行測試,確保它按預期那樣結束。

select循環與菜單

select 變量 in list;do

循環體命令

done

select循環主要用于創建菜單,常與case語句搭配使用,用戶輸入菜單列表中的某個數字,執行相應的命令

select是個無限循環,因此要記住用break命令退出循環,或用戶exit命令終止腳本。可按ctrl+c退出循環

與for循環類似,可以省略in list,此時使用位置變量。

相關變量:

$PS3 ?????? menu菜單提示符

$REPLY?? 保存用戶的輸入信息

四、信號捕捉trap

trap‘觸發指令’信號

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

trap” 信號

忽略信號的操作

trap‘-‘ 信號

恢復原信號的操作

trap -p

列出自定義信號操作

例:打印數字1到10的過程中,trap -p顯示自定義信號操作,由于trap ”int捕獲了int信號,ctrl+c無法中斷顯示,且顯示自定義輸入:press ctrl+c;

打印數字11到20的過程中,由于trap ”int捕獲了int信號,ctrl+c無法中斷顯示

打印數字21到30的過程中,trap ‘-‘恢復了原信號操作,顧ctrl+c又可中斷顯示

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.178linux.com/97879

總結

以上是生活随笔為你收集整理的linux脚本打印循环次数,shell脚本编程基础(3)——循环用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。