linux shell腳本-基礎(chǔ)知識(三)

步進(jìn)循環(huán)語句for

1.帶列表的for循環(huán)語句

基本語法:

for variable in {list}
do 
    statement1
    statement2
done

例1:使用帶列表的for語句

#! /bin/bash

for var in 1 2 3 4 5 6 7 8
do
    echo "the number is $var"
done

可將上面的代碼改造设江,得到相同的結(jié)果

#! /bin/bash

for var in {1..8}
do
    echo "the number is $var"
done

例2:指定for語句的步長
基本語法:

for variable in {start..end..step}
do
    statement1
    statement2
    ..
done
#! /bin/bash

sum=0;
for i in {1..100..2}
do
    let "sum+=i"
done
echo "the sum is $sum"

例3:使用ls命令的輸出結(jié)果作為for循環(huán)的執(zhí)行條件

#! /bin/bash

#${ls}可換成*全释,代表ls *
for file in $(ls)
do
    echo "$file"
done

例4:使用for循環(huán)逐個處理腳本的參數(shù)

#! /bin/bash

echo "$*"
for arg in $*
do
    echo "${arg}"
done

2.不帶列表的for循環(huán)語句

基本語法:

for variable
do
    statement1
    statement2
    ..
done

例5:使用不帶列表的for循環(huán)語句

#! /bin/bash

for arg
do
    echo "$arg"
done

結(jié)果為

root@VM_16_3_centos for]$ sh for_arg.sh z x c v b n
z
x
c
v
b
n

3.類C風(fēng)格的for循環(huán)語句

基本語法:

for ((expression1;expression2;expression3))
do
    statement1
    statement2
    ..
done

例6:使用上述語法

#! /bin/bash

for (( i=1; i<5; i++))
do
    echo "$i"
done

4.使用for循環(huán)語句處理數(shù)組

基本語法:

for variable in ${array[*]}
do
    statement1
    statement2
    ..
done

例7:處理數(shù)組

#! /bin/bash

array=(Monday Tuesday Wednesday Thursday Friday Saturday Sunday)
for day in ${array[*]}
do
    echo $day
done

結(jié)果為

[root@VM_16_3_centos for]$ sh array.sh 
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

while循環(huán)語句

1.while語句的基本語法

基本語法:

while expression
do
    statement1
    statement2
    ..
done

當(dāng)expression表達(dá)式的值為0時玻墅,執(zhí)行循環(huán)內(nèi)的語句;否則退出while循環(huán)

例11:使用while循環(huán)來輸出數(shù)字1~9的平方

#! /bin/bash

i=1
while [ "$i" -lt 10 ]
do
    let "square=i*i"
    echo "$i*$i=$square"
    let "i=i+1"
done

執(zhí)行結(jié)果:

[root@VM_16_3_centos for]$ sh while.sh 
1*1=1
2*2=4
3*3=9
4*4=16
5*5=25
6*6=36
7*7=49
8*8=64
9*9=81

2.通過break語句跳出指定的層數(shù)

例12:給breakbreakbreak一個參數(shù)使其跳出指定的層數(shù)

for (( i=1; i<=9; i++ ))
do
    for (( j=1; j<=i; j++ ))
    do
        let "product=i*j"
        printf "$i*$j=$product"
        # 主要進(jìn)行格式整理
        if [[ "product" -gt 9 ]]
        then
            printf "    "
        else
            printf "     "
        fi
        if [[ "$j" -eq 5 ]]
        then
            break 2
        fi
    done
    echo
done

結(jié)果為:

[root@VM_16_3_centos for]$ sh break.sh 
1*1=1     
2*1=2     2*2=4     
3*1=3     3*2=6     3*3=9     
4*1=4     4*2=8     4*3=12    4*4=16    
5*1=5     5*2=10    5*3=15    5*4=20    5*5=25    [root@VM_16_3_centos for]$

乘法表中當(dāng)j 等于5的時候勾笆,break 2 語句跳出了兩層循環(huán)念逞,所以在for循環(huán)后的echo沒有執(zhí)行到。所以最后的命令提示行和腳本在一行中荆残。

含參數(shù)的continue語句

例13:使用含參數(shù)的continue語句

#! /bin/bash

for i in a b c d
do
    echo -n "$i "
    for j in `seq 10`
    do
        if [ $j -eq 5 ]
        then
            continue 2
        fi
        echo -n "$j "
    done
    echo
done

執(zhí)行結(jié)果:

[root@VM_16_3_centos for]$ sh continue.sh 
a 1 2 3 4 b 1 2 3 4 c 1 2 3 4 d 1 2 3 4 [root@VM_16_3_centos for]$ 

當(dāng)執(zhí)行的到 j 等于5的時候,continue 2 跳過外層echo净当。

參考文章:
【從0到1 Shell】(六)循環(huán)結(jié)構(gòu)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末内斯,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子像啼,更是在濱河造成了極大的恐慌嘿期,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,686評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件埋合,死亡現(xiàn)場離奇詭異备徐,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)甚颂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,668評論 3 385
  • 文/潘曉璐 我一進(jìn)店門蜜猾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人振诬,你說我怎么就攤上這事蹭睡。” “怎么了赶么?”我有些...
    開封第一講書人閱讀 158,160評論 0 348
  • 文/不壞的土叔 我叫張陵肩豁,是天一觀的道長。 經(jīng)常有香客問我辫呻,道長清钥,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,736評論 1 284
  • 正文 為了忘掉前任放闺,我火速辦了婚禮祟昭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘怖侦。我一直安慰自己篡悟,他們只是感情好谜叹,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,847評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著搬葬,像睡著了一般荷腊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上急凰,一...
    開封第一講書人閱讀 50,043評論 1 291
  • 那天停局,我揣著相機(jī)與錄音,去河邊找鬼香府。 笑死董栽,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的企孩。 我是一名探鬼主播锭碳,決...
    沈念sama閱讀 39,129評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼勿璃!你這毒婦竟也來了擒抛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,872評論 0 268
  • 序言:老撾萬榮一對情侶失蹤补疑,失蹤者是張志新(化名)和其女友劉穎歧沪,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體莲组,經(jīng)...
    沈念sama閱讀 44,318評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡诊胞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,645評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了锹杈。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片撵孤。...
    茶點(diǎn)故事閱讀 38,777評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖竭望,靈堂內(nèi)的尸體忽然破棺而出邪码,到底是詐尸還是另有隱情,我是刑警寧澤咬清,帶...
    沈念sama閱讀 34,470評論 4 333
  • 正文 年R本政府宣布闭专,位于F島的核電站,受9級特大地震影響旧烧,放射性物質(zhì)發(fā)生泄漏影钉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,126評論 3 317
  • 文/蒙蒙 一粪滤、第九天 我趴在偏房一處隱蔽的房頂上張望斧拍。 院中可真熱鬧,春花似錦杖小、人聲如沸肆汹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,861評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽昂勉。三九已至,卻和暖如春扫腺,著一層夾襖步出監(jiān)牢的瞬間岗照,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,095評論 1 267
  • 我被黑心中介騙來泰國打工笆环, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留攒至,地道東北人。 一個月前我還...
    沈念sama閱讀 46,589評論 2 362
  • 正文 我出身青樓躁劣,卻偏偏與公主長得像迫吐,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子账忘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,687評論 2 351