成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何重復執行一條命令直至運行成功?

系統 Linux
作為程序員,重復性的工作怎么能忍呢?只要是重復性的工作,就有可能使用編程的方式來解決!下面良許就介紹兩種方法重復執行一條命令直至運行成功。

在我們的日常工作中,需要我們重復做的工作簡直不能太多。比如,我們想要確認網絡是否是連通的,傳統的做法就是使用 ping 命令不停去測試某個地址(比如百度)。網絡比較好還好說,但如果網絡很差,那么就需要一直去運行 ping 命令。

作為程序員,重復性的工作怎么能忍呢?只要是重復性的工作,就有可能使用編程的方式來解決!

下面良許就介紹兩種方法重復執行一條命令直至運行成功。

(PS:本文適合初學者,高手可繞道)

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

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

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

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

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

1. 使用 while 循環

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

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

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

簡單介紹:

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

  1. $ while ! ping -c 3 baidu.com ; 

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

  1. $ do sleep 2 ; done ; 

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

  1. $ echo succeed ; 

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

2. 使用 until 循環

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

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

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

我們也來簡單拆解一下。

  1. $ until ping -c 3 baidu.com ; 

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

  1. $ do sleep 2 ; 

循環體,睡眠 2 秒。

  1. $ echo succeed 

成功后做的事情。

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

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

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

  1. $ !! 

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

  1. # while 循環寫法 
  2. $ !!; while [ $? -ne 0 ]; do !!; done 
  3.  
  4. # until 循環寫法 
  5. $ until !!; do :; done 

本文授權轉載自公眾號「良許Linux」。良許,世界500強外企Linux開發工程師,公眾號里分享大量Linux干貨,歡迎關注!

 

責任編輯:趙寧寧 來源: 良許Linux
相關推薦

2024-06-12 13:36:24

2022-02-11 14:43:53

SQL語句C/S架構

2009-08-05 10:43:19

CISSPBCPDRP

2011-03-21 17:19:12

LAMPUbuntu

2023-02-26 23:31:01

SQL數據庫

2015-07-28 11:06:28

日志記錄Linux命令

2024-12-17 06:20:00

MySQLSQL語句數據庫

2021-12-02 15:30:55

命令內存Linux

2024-08-02 11:48:36

云計算服務

2024-07-29 09:49:00

SQLMySQL執行

2025-05-20 00:00:00

2021-06-03 06:52:11

Redis服務器命令

2021-06-07 08:37:03

SQL 查詢語句

2021-06-30 07:47:03

Linux CPULinux 系統

2018-08-14 08:43:17

服務器命令CCS系統

2022-05-31 13:58:09

MySQL查詢語句

2024-02-20 13:43:12

2025-05-12 08:27:25

2011-03-16 16:48:32

iptables 清空

2024-04-19 07:31:58

MySQL數據庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产午夜精品一区二区三区四区 | av影音 | 国产在线二区 | 性高湖久久久久久久久3小时 | 天天天天操 | 国产激情视频网址 | 中文字幕日本一区二区 | 一区二区三区视频在线观看 | 精品视频在线播放 | 91国产在线视频在线 | 国产精品夜夜夜一区二区三区尤 | 国产成人一区二区三区久久久 | 武道仙尊动漫在线观看 | 欧美a级成人淫片免费看 | 日韩成人高清 | 一区二区三区视频免费看 | 日韩久久精品视频 | 国产精久久久久久久 | 久久久99国产精品免费 | 亚洲视频三区 | 视频一二区 | 成人高清视频在线观看 | 国产精品久久国产精品 | 正在播放国产精品 | 国产目拍亚洲精品99久久精品 | 日韩免费一区二区 | 一区二区三区四区视频 | 成人国产精品免费观看 | 日韩中文一区二区 | 久久久久国产精品 | 狠狠操狠狠操 | 亚洲免费人成在线视频观看 | 在线免费观看黄色av | 亚洲成人网在线观看 | 精品成人免费一区二区在线播放 | 国产一区二区三区在线免费观看 | 免费一级黄色录像 | 国色天香综合网 | 中文字幕av一区二区三区 | 成人午夜影院 | 高清久久 |