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

歡迎訪問 生活随笔!

生活随笔

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

linux

Linux 探索之旅 | 第五部分第五课:循环往复,Shell 开路

發(fā)布時間:2025/3/21 linux 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux 探索之旅 | 第五部分第五课:循环往复,Shell 开路 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

-- 作者 謝恩銘 轉載請注明出處

內容簡介


  • 前言
  • while 循環(huán)
  • until 循環(huán)
  • for 循環(huán)
  • 總結
  • 第五部分第六課預告
  • 1. 前言


    上一課 Linux探索之旅 | 第五部分第四課:條件一出,Shell不服 中我們學習了 Shell 中的條件語句。

    好吧,我承認,最近幾課的標題有點「雷人」...

    有了上一課的基礎,這一課將是很輕松的。

    我們來學習一個所有編程語言都有的要素:循環(huán)語句。

    循環(huán)語句使我們得夠重復一個代碼塊任意多次。這么有用的機制,Shell 語言當然支持。

    Shell 中,主要的循環(huán)語句有三種:while 循環(huán),until 循環(huán) 和 for 循環(huán)。我們一一來學習。

    2. while 循環(huán)


    在 Shell 中,我們最常用的循環(huán)是 while 循環(huán)。

    while 是英語「當... 的時候;在… 期間」的意思。

    while 循環(huán)的邏輯是這樣的:

    while [ 條件測試 ] do做某些事 done復制代碼

    do 是英語「做」的意思。
    done 是英語「完成」的意思。

    當然了,我們也可以像在 if 語句中那樣,把 關鍵字 do 放到與條件測試同一行上,但是之間要加分號,如下:

    while [ 條件測試 ]; do做某些事 done復制代碼

    while 循環(huán)流程圖:

    while 循環(huán)流程圖

    我們來寫一個程序,它會請求用戶輸入「 yes 」(英語「是」的意思),如果用戶沒有輸入任何字符或者輸入的字符串不是 「yes」,那么程序就一直請求。

    首先,我們創(chuàng)建一個名叫 「 loop.sh 」的文件( loop 是英語「循環(huán)」的意思)。

    vim loop.sh復制代碼

    在這個文件中輸入以下內容:

    #!/bin/bashwhile [ -z $response ] || [ $response != 'yes' ] doread -p 'Say yes : ' response done復制代碼

    response 是英語「回答」的意思。
    say 是英語「說」的意思。

    運行:

    我們做了兩個條件測試:

    • response是否是空 :-z $response
    • response 是否不等于「yes」:$response != 'yes'

    因為這兩個條件測試之間是用 || (邏輯或)連接的,因此只要兩個條件有一個成立,整個條件測試即成立,就會執(zhí)行 do 和 done 之間的語句。

    可以看到,這個程序非常「任性」,只要我們輸入的不是「 yes 」,它就不停止輸出「 Say yes : 」。真是「咄咄逼人」...

    3. until 循環(huán)


    與 while 這個關鍵字相反的有一個 until 關鍵字,until 在英語中是 「直到」的意思。

    它也可以實現(xiàn)循環(huán),只不過邏輯和 while 循環(huán)正好相反。

    until 循環(huán)流程圖:

    until 循環(huán)流程圖

    我們可以用 until 來改寫一下上面的程序:

    #!/bin/bashuntil [ "$response" = 'yes' ] doread -p 'Say yes : ' response done復制代碼

    運行結果和 while 循環(huán)那個是一樣的。

    4. for 循環(huán)


    for 是英語「對于」的意思。

    首先,我們要提醒已經(jīng)學過主流編程語言(如 C語言,Java,等等)的讀者,Shell 中的 for 循環(huán)和你已經(jīng)習慣的 for 循環(huán)方式略有不同。

    我們一起來學習吧。

    遍歷列表


    for 循環(huán)可以遍歷一個「取值列表」,基本的邏輯如下:

    for 變量 in '值1' '值2' '值3' ... '值n' do做某些事 done復制代碼

    in 是英語「在... 之中」的意思。

    for 循環(huán)流程圖:

    for 循環(huán)流程圖

    我們來寫一個例子:

    #!/bin/bashfor animal in 'dog' 'cat' 'pig' doecho "Animal being analyzed : $animal" done復制代碼

    「 Animal being analyzed 」是英語「正在被分析的動物」的意思。

    運行:

    可以看到,animal 這個變量依次取了 'dog'(狗), 'cat'(貓), 'pig'(豬) 這三個值。

    for 循環(huán)的取值列表不一定要在代碼中定義好,我們也可以用一個變量,如下例:

    #!/bin/bashlistfile=`ls`for file in $listfile doecho "File found : $file" done復制代碼

    「 File found 」是英語「找到的文件」的意思。

    運行:

    如你所見,上面的程序列出了當前目錄下所有的文件。

    我們還可以簡化上面的程序,不需要用到 listfile 這個變量:

    #!/bin/bashfor file in `ls` doecho "File found : $file" done復制代碼

    我們可以再改進這個程序,讓它復制當前目錄下的文件,并且把每個副本的名字修改為「現(xiàn)有名字 + -copy」 (copy 是英語「拷貝」的意思):

    #!/bin/bashfor file in `ls` docp $file $file-copy done復制代碼

    運行:

    可見,Shell 非常強大。

    更常規(guī)的 for 循環(huán)


    剛才我們看到的 for 循環(huán),和主流編程語言中的語法略有不同,不過我們可以借助 seq 命令,來實現(xiàn)類似主流編程語言中的 for 循環(huán)的語法。

    seq 是 sequence 的縮寫,是英語「序列」的意思。

    來寫一個例子:

    #!/bin/bashfor i in `seq 1 10` doecho $i done復制代碼

    運行:

    以上程序中,「 seq 1 10 」會返回一個取值列表,是從 1 到 10 的整數(shù)值。因此,echo 就會遍歷輸出 1 到 10 這 10 個整數(shù)。

    我們也可以修改默認的取值間隔 ( 1 ),改成我們需要的數(shù)值,如下:

    #!/bin/bashfor i in `seq 1 2 10` doecho $i done復制代碼

    運行:

    以上程序中,「 seq 1 2 10 」會返回一個取值列表,是從 1 到 10 的整數(shù)值,但是取值間隔是 2,echo 就會遍歷輸出 1 到 10 這 10 個整數(shù)中的 1,3,5,7,9 這5個整數(shù)。

    5. 總結


  • 我們使用循環(huán)語句來重復執(zhí)行一系列指令。

  • while 循環(huán)在條件滿足的情況下可以一直重復執(zhí)行。其中的條件測試語句的機制和上一課的條件語句中的一樣。

  • until 循環(huán)和 while 循環(huán)的邏輯正好相反。

  • for 循環(huán)可以遍歷一個「取值列表」,來依次執(zhí)行相應的指令。在 for 循環(huán)內部,變量的取值會逐步變化。

  • 6. 第五部分第六課預告


    今天的課就到這里,一起加油吧!

    下一課我們學習:一朝Shell函數(shù)傾,斗轉星移任我行


    微信公眾號「程序員聯(lián)盟」ProgrammerLeague
    我是謝恩銘,在巴黎奮斗的軟件工程師。
    我的簡介
    我的經(jīng)歷
    熱愛生活,喜歡游泳,略懂烹飪。
    人生格言:“向著標桿直跑”

    總結

    以上是生活随笔為你收集整理的Linux 探索之旅 | 第五部分第五课:循环往复,Shell 开路的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 偷拍女澡堂一区二区三区 | 中文字幕在线观看免费高清 | 在线播放视频高清在线观看 | 亚洲第一页夜 | 午夜视频福利在线观看 | 巨乳动漫美女 | 国产麻豆剧传媒精品国产av | 夜夜天天 | 亚洲精品一区二区三区蜜臀 | 91玉足脚交嫩脚丫在线播放 | 99xav| 1024手机在线观看 | 刘亦菲毛片一区二区三区 | 在线成人免费电影 | 久久久精品国产免费爽爽爽 | 午夜宅男影院 | 日韩欧美亚洲国产精品字幕久久久 | 久久精品这里有 | 秋霞在线视频观看 | 中文字幕一区二区精品 | www.欧美.com| 玖玖精品国产 | 最好看的电影2019中文字幕 | 岛国午夜视频 | 精品一区二区视频在线观看 | 羞羞网站在线看 | 国产强伦人妻毛片 | 欧美三级中文字幕 | 国产精品中文无码 | 久久阁| 97视频免费 | 欧美国产日本在线 | 中文字幕韩日 | 国产97色在线 | 国产 | 区一区二视频 | 欧美日本一道本 | 欧美另类极品videosbest最新版本 | 国产精品另类 | 日韩mv欧美mv国产网站 | av免费成人 | 免费一区二区三区四区 | 在线观看欧美精品 | 全部免费毛片在线播放 | аⅴ资源天堂资源库在线 | 日韩精品免费一区二区在线观看 | 中文字幕免费高清在线观看 | 日本大尺度做爰呻吟舌吻 | 特级a毛片| 男女在线观看视频 | 狼人色综合 | 粉嫩久久99精品久久久久久夜 | 伊人黄色 | 国内精品国产成人国产三级 | 国产精品中文久久久久久 | 天堂最新资源在线 | 亚洲国产一区二区三区 | 国产孕交 | 中文字幕乱码在线 | www.日韩欧美 | 久久久美女视频 | 欧美日韩综合视频 | 99精品一区二区 | 久久综合一本 | 精品亚洲永久免费精品 | 黄色免费播放 | 久久福利视频导航 | 国产亚洲精 | 99视频导航 | 成人精品视频一区二区三区尤物 | 国产精品日日做人人爱 | 中文久久久久 | 色射综合 | 亚洲人人精品 | 日本一品道 | 啊av在线 | 日韩理论在线观看 | 免费成人深夜夜 | 国产伦理吴梦梦伦理 | 国产乱码精品一区二区三区亚洲人 | 欧美成人精品欧美一级乱黄 | 国产freexxxx性播放麻豆 | av中文字幕网址 | 欧美二三区| 熟女少妇一区二区三区 | 中文字幕一区二区人妻在线不卡 | 日韩在线视频你懂的 | 午夜tv| 中文字幕一区二区三区人妻不卡 | 网红日批视频 | 中文字幕在线观看1 | 精品无码黑人又粗又大又长 | 人妻换人妻仑乱 | 欧美视频日韩视频 | www.蜜臀av.com| 成人短视频在线免费观看 | 91在线超碰 | 国产又黄又大又爽 | 黄色正能量网站 | 天天操人人 |