我在提出正確的分號和/或花括號組合時遇到麻煩。 我想這樣做,但是作為命令列的單行**:
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
請注意,與while
,until
測試條件的退出狀態不為零while
,until
將在迴圈內執行命令。
使用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 可以是任意的表示式,當為任意非零值時都為真。當條件為真時執行迴圈。...