91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-12-17 14:02:04 來源:億速云 閱讀:1688 作者:iii 欄目:開發技術

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

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

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

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

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

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

1. 使用 while 循環

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

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

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

簡單介紹:

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

$ 
while ! ping -c 
3 baidu.com ;

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

$ do sleep 2 ; 
done ;

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

$ echo succeed ;

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

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

2. 使用 until 循環

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

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

實現的效果與上面無異,所不同的是,當循環條件為真時,退出循環。

我們也來簡單拆解一下。

$ 
until ping -c 
3 baidu.com ;

這部分是循環條件,它將執行 ping 命令,執行結果作為判斷依據。直到 ping 命令執行成功時,才退出循環。

$ 
do sleep 2 ;

循環體,睡眠 2 秒。

$ echo succeed

成功后做的事情。

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

3. 重復執行上個命令直到成功

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

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

$ !!

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

# 
while 循環寫法
$ !!; while [ $? -ne 0 ]; do !!; done

# until 循環寫法
$ until !!; do :; done

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

始兴县| 磴口县| 堆龙德庆县| 博爱县| 美姑县| 文登市| 景谷| 临湘市| 察哈| 资溪县| 崇阳县| 甘谷县| 阜城县| 饶阳县| 白城市| 崇州市| 荥经县| 通城县| 荆门市| 青川县| 蕲春县| 兴宁市| 合肥市| 宁安市| 肃宁县| 日喀则市| 剑阁县| 临汾市| 陕西省| 嘉祥县| 如东县| 哈巴河县| 华容县| 阜新| 樟树市| 卢龙县| 滨州市| 洛川县| 吐鲁番市| 铅山县| 铜鼓县|