shell常用循環(huán)語(yǔ)法

shell常用循環(huán)語(yǔ)法

本文抄襲自其他博主(比書(shū)上總結(jié)的到位)庐杨,鏈接在文末

1 for 循環(huán)

1.1 列表for循環(huán)

1.1.1 數(shù)字for循環(huán)

#!/bin/bash  
  
for value in {1..5}  
#for value in 1 2 3 4 5  
do  
     echo "Now value is $value..."  
done 
  • do和done之間的命令稱為循環(huán)體绰咽,執(zhí)行次數(shù)和list列表中常數(shù)或字符串的個(gè)數(shù)相同疼邀。for循環(huán)宏悦,首先將in后list列表的第一個(gè)常數(shù)或字符串賦值給循環(huán)變量,然后執(zhí)行循環(huán)體萄传,以此執(zhí)行l(wèi)ist儒陨;最后執(zhí)行do命令后的命令序列。
  • shell支持列表for循環(huán)使用略寫的計(jì)數(shù)方式琳彩,1~5的范圍用{1..5}表示(大括號(hào)不能去掉誊酌,否則會(huì)當(dāng)作一個(gè)字符串處理)。

??shell中還支持按規(guī)定的步數(shù)進(jìn)行跳躍的方式實(shí)現(xiàn)列表for循環(huán)露乏,例如計(jì)算1~100內(nèi)所有的奇數(shù)之和

#!/bin/bash
sum=0

for i in {1..100..2}
do
    let "sum+=i"
done
echo "sum=$sum"
#!/bin/bash

for i in $(seq 1 5)
do 
echo $(expr $i \* $i + 1);
done

1.1.2 字符串for循環(huán)

??顯示參數(shù)列表的所有單詞

#!/bin/bash  

for i in v1 v2 v3 ;  
do  
echo value is: $i;  
done 

??顯示list中的所有單詞

#!/bin/bash

list="Earth is the Home of Human! ";
for i in $list;
do
echo word is $i;
done

??傳入?yún)?shù)列表

#!/bin/bash  
  
for i in $* ;  
do  
echo $i is input value\! ;  
done

1.1.3 路徑查找for循環(huán)

??查詢當(dāng)前目錄下的文件列表

#!/bin/bash

for file in $( ls )
# for file in `ls`
# for file in *
do
   echo "file: $file"
done

??通配符查找指定路徑

#!/bin/bash  
  
for file in /log/*;  
do  
echo $file;  
done

??通配符查找指定路徑下符合指定擴(kuò)展名的文件路徑

#!/bin/bash  
  
for file in /var/log/*log;  
do  
echo $file;  
done

1.2 類C風(fēng)格的for循環(huán)

#!/bin/bash

for((i=1;i<=5;i++));
do 
echo $(expr $i \* $i + 1);
done
#!/bin/bash

awk 'BEGIN{
for(i=1; i<=5; i++) 
print (i*i+1)
}'

2 while 循環(huán)

??也稱為前測(cè)試循環(huán)語(yǔ)句碧浊,重復(fù)次數(shù)是利用一個(gè)條件來(lái)控制是否繼續(xù)重復(fù)執(zhí)行這個(gè)語(yǔ)句。為了避免死循環(huán)瘟仿,必須保證循環(huán)體中包含循環(huán)出口條件即表達(dá)式存在退出狀態(tài)為非0的情況箱锐。

??例如,計(jì)算1~100以內(nèi)所有的奇數(shù)之和:

#!/bin/bash  
  
sum=0
i=1  
while(( i <= 100 ))  
do  
     let "sum+=i"  
     let "i += 2"     
done  
  
echo "sum=$sum"

3 until 循環(huán)

??until命令和while命令類似劳较,while能實(shí)現(xiàn)的功能until也可以實(shí)現(xiàn)驹止。但區(qū)別是until循環(huán)的退出狀態(tài)是為0(與while剛好相反),即whie循環(huán)在條件為真時(shí)繼續(xù)執(zhí)行循環(huán)观蜗,而until則在條件為假時(shí)執(zhí)行循環(huán)臊恋。

??例如,計(jì)算1~100以內(nèi)所有的奇數(shù)之和:

#!/bin/bash  
  
i=1
sum=0  
until [[ "$i" -gt 100 ]]    #直到i大于100  
do  
    let "sum+=i"  
    let "i += 2"   
done

echo "sum=$sum"

4 select 實(shí)現(xiàn)的循環(huán)

??select結(jié)構(gòu)從技術(shù)角度看不能算是循環(huán)結(jié)構(gòu)墓捻,只是相似而已捞镰,它是bash的擴(kuò)展結(jié)構(gòu)用于交互式菜單顯示,功能類似于case結(jié)構(gòu)毙替,但是比case的交互性要好岸售。在遍歷列表功能中,select結(jié)構(gòu)可以實(shí)現(xiàn)循環(huán)的功能厂画。

??例如凸丸,以下選擇,只有選擇white的時(shí)候袱院,退出循環(huán)

#!/bin/bash  

select color in "red" "blue" "green" "white" "black"  
do   
    echo $color  
done  

5 循環(huán)控制符

??在循環(huán)語(yǔ)法中屎慢,經(jīng)常需要根據(jù)條件控制循環(huán)退出或跳過(guò)本次執(zhí)行瞭稼,這時(shí)候就需要用到循環(huán)控制符。循環(huán)控制符主要包括兩個(gè):break和continue腻惠。

  • break:退出本層循環(huán)循環(huán)环肘。
  • continue:只退出本次循環(huán),仍然執(zhí)行后繼續(xù)循環(huán)集灌。

5.1 break

??在for悔雹、while和until循環(huán)中break可強(qiáng)行退出循環(huán)。

??注意:break語(yǔ)句僅能退出當(dāng)前的循環(huán)欣喧,如果是兩層循環(huán)嵌套腌零,則需要在外層循環(huán)中使用break。

??例如,計(jì)算1~100以內(nèi)所有的奇數(shù)之和:

#!/bin/bash

sum=0
for (( i=1; i <= 1000; i+=2))
do 
    if  [ "$i" -lt 100 ]
    then 
        let "sum+=i"
    elif [ "$i" -gt 100 ]
    then
        echo "sum=$sum"
        break
    fi
done

5.2 continue

??在for唆阿、while和until中用于讓腳本跳過(guò)其后面的語(yǔ)句益涧,執(zhí)行下一次循環(huán)。

??例如驯鳖,顯示10以內(nèi)能被3整除的正整數(shù)闲询。

#!/bin/bash  
  
for (( i=1; i < 10; i++ ))  
do  
    let "tmp=i%3"         #被3整除  
   
    if [ "$tmp" -ne 0 ]  
    then  
        continue  
    fi  
      
    echo -n "$i  "        
done  
echo "" 

摘抄自

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市浅辙,隨后出現(xiàn)的幾起案子嘹裂,更是在濱河造成了極大的恐慌,老刑警劉巖摔握,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寄狼,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡氨淌,警方通過(guò)查閱死者的電腦和手機(jī)泊愧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)盛正,“玉大人删咱,你說(shuō)我怎么就攤上這事『荔荩” “怎么了痰滋?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)续崖。 經(jīng)常有香客問(wèn)我敲街,道長(zhǎng),這世上最難降的妖魔是什么严望? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任多艇,我火速辦了婚禮,結(jié)果婚禮上像吻,老公的妹妹穿的比我還像新娘峻黍。我一直安慰自己复隆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布姆涩。 她就那樣靜靜地躺著挽拂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪骨饿。 梳的紋絲不亂的頭發(fā)上亏栈,一...
    開(kāi)封第一講書(shū)人閱讀 52,696評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音样刷,去河邊找鬼。 笑死览爵,一個(gè)胖子當(dāng)著我的面吹牛置鼻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蜓竹,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼箕母,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了俱济?” 一聲冷哼從身側(cè)響起嘶是,我...
    開(kāi)封第一講書(shū)人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蛛碌,沒(méi)想到半個(gè)月后聂喇,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蔚携,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年希太,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片酝蜒。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡誊辉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出亡脑,到底是詐尸還是另有隱情堕澄,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布霉咨,位于F島的核電站蛙紫,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏途戒。R本人自食惡果不足惜惊来,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望棺滞。 院中可真熱鬧裁蚁,春花似錦矢渊、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至室谚,卻和暖如春毡鉴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背秒赤。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工猪瞬, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人入篮。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓陈瘦,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親潮售。 傳聞我的和親對(duì)象是個(gè)殘疾皇子痊项,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 1 shell腳本簡(jiǎn)介 在簡(jiǎn)單介紹shell腳本(shell script)之前,先簡(jiǎn)單介紹一下shell酥诽。 1....
    Jerry_1116閱讀 22,776評(píng)論 0 5
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,408評(píng)論 0 5
  • ¥開(kāi)啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開(kāi)一個(gè)線程鞍泉,因...
    小菜c閱讀 6,450評(píng)論 0 17
  • 在C語(yǔ)言中,五種基本數(shù)據(jù)類型存儲(chǔ)空間長(zhǎng)度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來(lái)閱讀 3,352評(píng)論 0 2
  • Lua 5.1 參考手冊(cè) by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 13,836評(píng)論 0 38