單行Bash無限while迴圈的語法

2021-10-01 21:40:56 字數 2982 閱讀 2653

我在提出正確的分號和/或花括號組合時遇到麻煩。 我想這樣做,但是作為命令列的單行**:

while [ 1 ]

do foo

sleep 2

done

while true; do foo; sleep 2; done
順便說一句,如果您在命令提示符下將其鍵入為多行(如您所顯示),然後使用向上的箭頭呼叫歷史記錄,則可以在一行上正確地標出它。

$ while true

> do

> echo "hello"

> sleep 2

> done

hello

hello

hello

^c$ while true; do echo "hello"; sleep 2; done

您可以使用分號來分隔語句:

$ while [ 1 ]; do foo; sleep 2; done
也可以在while條件下使用sleep命令。 使單線看起來更乾淨恕我直言。

while sleep 2; do echo thinking; done
冒號始終是「 true」:

while :; do foo; sleep 2; done
您還可以使用until命令:

until ((0)); do foo; sleep 2; done
請注意,與whileuntil測試條件的退出狀態不為零whileuntil將在迴圈內執行命令。

使用while迴圈:

while read i; do foo; sleep 2; done < /dev/urandom
使用for迴圈:

for ((;;)); do foo; sleep 2; done
另一種使用until

until [ ]; do foo; sleep 2; done
乙個非常簡單的無限迴圈.. :)

while true ; do continue ; done
如果您的問題是:

while true; do foo ; sleep 2 ; done
為了**過程簡單,請使用watch

您也可以嘗試這樣做。警告:您不應該這樣做,但是由於問題是要求無限迴圈,這是您可以做到的。

while [[ 0 -ne 1 ]]; do echo "it's looping";   sleep 2; done
如果您希望while迴圈在某些條件後停止,並且foo命令在滿足此條件時返回非零值,則可以使迴圈中斷,如下所示:

while foo; do echo 'sleeping...'; sleep 5; done;
例如,如果foo命令正在批量刪除內容,則在沒有要刪除的內容時返回1。

如果您有乙個自定義指令碼,該指令碼需要多次執行命令直到出現某種情況,則此方法很好用。 您編寫的指令碼在滿足條件時以1退出,並在應再次執行時以0退出。

例如,假設您有乙個python指令碼batch_update.py,它將更新資料庫中的100行,如果有更多行要更新,則返回0如果沒有行,則返回1。 以下命令將允許您一次更新行100,並在兩次更新之間休眠5秒:

while batch_update.py; do echo 'sleeping...'; sleep 5; done;
我喜歡只對while語句使用分號,並且&&運算子使迴圈執行不只一件事...

所以我總是這樣

while true ; do echo launching spaceship into orbit && sleep 5s && /usr/bin/launch-mechanism && echo launching in t-5 && sleep 1s && echo t-4 && sleep 1s && echo t-3 && sleep 1s && echo t-2 && sleep 1s && echo t-1 && sleep 1s && echo liftoff ; done
使用while

while true; do echo 'while'; sleep 2s; done
使用for迴圈:

for ((;;)); do echo 'forloop'; sleep 2; done
使用recursion,(與上面略有不同,鍵盤中斷不會停止它)

list() && list;
如果我可以舉兩個實際的例子(有點「情感」)。

這會將所有以「 .jpg」結尾的檔案的名稱寫入資料夾「 img」中:

for f in *; do if [ "$" == 'jpg' ]; then echo $f; fi; done
這將刪除它們:

for f in *; do if [ "$" == 'jpg' ]; then rm -r $f; fi; done
只是想貢獻。

for迴圈 while迴圈

迴圈結構 當重複執行相同的 或者是相似的 時。迴圈三要素 1 迴圈變數的宣告 用於控制迴圈次數的迴圈因子 2 迴圈條件 用於判斷是否執行相同或相似內容 迴圈體 的條件 3 迴圈變數的改變方向 向著迴圈結束的方向改變。1 for迴圈 語法 for 變數的宣告和初始化 迴圈條件 變數的改變方向 執行邏輯...

C語言 scanf在while迴圈裡的無限迴圈

首先看一段 include int main else if input 0 return 0 可以看出來它的意思是當輸入乙個正數時,會繼續輸入,直到輸入乙個負數時才停止。但是,粗心的我有一次把乙個字母輸入進去了,結果 為什麼會這樣呢?scanf d input 這句語句從緩衝區接受數字,而當我們輸...

while迴圈與for迴圈

只要給定的條件為真,while 迴圈語句會重複執行乙個目標語句。語法c 中 while 迴圈的語法 while condition 在這裡,statement s 可以是乙個單獨的語句,也可以是幾個語句組成的 塊。condition 可以是任意的表示式,當為任意非零值時都為真。當條件為真時執行迴圈。...