如何在Linux的bash中永遠循環(huán)
在 Linux 中有很多永遠循環(huán)(或直到你決定停止)的方法,你可以在命令行或腳本中執(zhí)行此操作。
for 和 while 命令使這件事非常容易。關于相應的語法和策略,只有幾件事要牢記。
使用 while
最簡單的永遠循環(huán)之一是使用 while 命令,后面跟上條件 true。 你不必使用諸如 while [ 1 -eq 1 ] 之類的邏輯或類似的測試。 while true 測試表示循環(huán)將一直運行,直到你使用 CTRL-C 停止循環(huán)、關閉終端窗口或注銷為止。這是一個例子:
$ while true> do> echo Keep running> sleep 3> doneKeep runningKeep runningKeep running^C
你也可以使用 while : 做同樣的事情。這里的關鍵是 : 總是返回成功,因此就像 while true 一樣,此測試永遠不會失敗,并且循環(huán)會繼續(xù)運行:
$ while :> do> echo Keep running> sleep 3> doneKeep runningKeep running^C
如果你在腳本中插入了無限循環(huán),并想提醒使用它的人如何退出腳本,那么可以使用 echo 命令添加提示:
while :doecho Keep runningecho "Press CTRL+C to exit"sleep 1done
使用 for
for 命令還提供了一種永遠循環(huán)的簡便方法。雖然不如 while true 明顯,但語法相當簡單。你只需要在有界循環(huán)中替換參數即可,它通常類似于 “c 從等于 1 開始遞增,直到 5”:
$ for (( c=1; c<=5; c++ ))
不指定任何參數的情況下:
$ for (( ; ; ))
沒有起始值、增量或退出測試,此循環(huán)將永遠運行或被強制停止:
$ for (( ; ; ))> do> echo Keep running> echo “Press CTRL+C to exit”> sleep 2> doneKeep your spirits upKeep your spirits upKeep your spirits up
為什么要永遠循環(huán)?
在現實中,你不會想永遠循環(huán)下去,但一直運行直到想要回家、工作完成或者遇到問題才退出并不罕見。任何構造為無限循環(huán)的循環(huán)都可以設置為根據各種情況退出。
該腳本將一直處理數據直到下午 5 點,或者說檢查發(fā)現第一次超過 5 點的時間:
#!/bin/bashwhile truedoif [ `date +%H` -ge 17 ]; thenexit # exit scriptfiecho keep running~/bin/process_data # do some workdone
如果要退出循環(huán)而不是退出腳本,請使用 break 命令而不是 exit。
#!/bin/bashwhile truedoif [ `date +%H` -ge 17 ]; thenbreak # exit loopfiecho keep running~/bin/process_datadone… run other commands here …
總結
永遠循環(huán)很容易。指定要停止循環(huán)的條件卻需要花費一些額外的精力。




























