成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

在Shell里怎么重復執(zhí)行一條命令直到運行成功-創(chuàng)新互聯(lián)

這篇文章主要講解了“在Shell里怎么重復執(zhí)行一條命令直到運行成功”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“在Shell里怎么重復執(zhí)行一條命令直到運行成功”吧!

站在用戶的角度思考問題,與客戶深入溝通,找到漢中網(wǎng)站設計與漢中網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站設計、成都網(wǎng)站建設、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、申請域名、雅安服務器托管、企業(yè)郵箱。業(yè)務覆蓋漢中地區(qū)。

解決重復性的工作,自然而然會想到循環(huán) 。在 Shell 里,循環(huán)無非 3 種:for、while、until 。在本文里,我們使用后兩種循環(huán):while 、until 。

關于這兩種循環(huán),有編程基礎的小伙伴應該是比較熟悉的了,這里再復習一下。

對于 while 循環(huán),在循環(huán)條件是 true 的情況下,它會重復執(zhí)行循環(huán)體(包含在 do ... done 結構體里),直到循環(huán)條件變成 false 。

而對于 untile 循環(huán),剛好與 while 循環(huán)相反,在循環(huán)條件是 false 的情況下,它會重復執(zhí)行循環(huán)體(包含在 do ... done 結構體里),直到循環(huán)條件變成 true 。

好了,復習完基礎知識,我們再來看看如何用這兩個循環(huán)實現(xiàn)我們的目的。

1. 使用 while 循環(huán)

還是以重復測試網(wǎng)絡連通性為例。我們可以使用以下命令來解放我們的雙手:

$ while ! ping -c 3 baidu.com ; 
do sleep 2 ; 
done ; 
echo succeed

對于這條命令,它將重復執(zhí)行 ping 命令,如果不成功,則 sleep 2 秒之后繼續(xù)嘗試,直到成功。成功之后,將在終端打印 succeed 字樣。

簡單介紹:

我們將這個命令分解開,然后簡要介紹各個模塊的作用。

$ 
while ! ping -c 
3 baidu.com ;

這是循環(huán)條件,我們的要求是「當 ping 命令執(zhí)行失敗時,執(zhí)行循環(huán)體」,所以我們要在 ping 之前加一個 ! 。

$ do sleep 2 ; 
done ;

這部分就是循環(huán)體。當循環(huán)條件成立時,就進入到循環(huán)體。為了不讓這個程序搶占太多資源,我們在循環(huán)體里睡眠 2 秒。一旦循環(huán)條件不成立時,就跳出循環(huán)體。

$ echo succeed ;

這部分是跳出循環(huán)體之后執(zhí)行的語句,僅僅是打印一個 succeed 字樣,當然你要做其它事也可以。

在Shell里怎么重復執(zhí)行一條命令直到運行成功

2. 使用 until 循環(huán)

我們使用 until 循環(huán)來完成同樣的事情,它的寫法如下:

$ until ping -c 3 baidu.com ; 
do sleep 2 ; 
done ; 
echo succeed

實現(xiàn)的效果與上面無異,所不同的是,當循環(huán)條件為真時,退出循環(huán)。

我們也來簡單拆解一下。

$ 
until ping -c 
3 baidu.com ;

這部分是循環(huán)條件,它將執(zhí)行 ping 命令,執(zhí)行結果作為判斷依據(jù)。直到 ping 命令執(zhí)行成功時,才退出循環(huán)。

$ 
do sleep 2 ;

循環(huán)體,睡眠 2 秒。

$ echo succeed

成功后做的事情。

在Shell里怎么重復執(zhí)行一條命令直到運行成功

3. 重復執(zhí)行上個命令直到成功

這里再額外拓展一下,如何重復執(zhí)行上個命令直到成功?

我們知道,想要重復運行上次的命令,可以使用這個命令:

$ !!

那如何判斷上個命令執(zhí)行是否成功呢?我們可以通過判斷 $? 的值是否為 0 來確定。

# 
while 循環(huán)寫法
$ !!; while [ $? -ne 0 ]; do !!; done

# until 循環(huán)寫法
$ until !!; do :; done

感謝各位的閱讀,以上就是“在Shell里怎么重復執(zhí)行一條命令直到運行成功”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對在Shell里怎么重復執(zhí)行一條命令直到運行成功這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關知識點的文章,歡迎關注!

分享名稱:在Shell里怎么重復執(zhí)行一條命令直到運行成功-創(chuàng)新互聯(lián)
分享URL:http://jinyejixie.com/article8/ghsip.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供電子商務、服務器托管、商城網(wǎng)站、網(wǎng)站收錄、關鍵詞優(yōu)化、域名注冊

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設
息烽县| 潼关县| 伽师县| 佛山市| 赤壁市| 洛南县| 广灵县| 南陵县| 怀集县| 会东县| 遵义市| 冷水江市| 江陵县| 永春县| 化州市| 年辖:市辖区| 东山县| 新宾| 威远县| 长武县| 安多县| 密山市| 江西省| 广宗县| 南郑县| 安达市| 隆安县| 建昌县| 威海市| 库尔勒市| 卢氏县| 元朗区| 文水县| 长泰县| 罗源县| 惠来县| 青神县| 龙川县| 老河口市| 铜川市| 武山县|