如何在 Linux 的 bash 中永遠循環
在 Linux 中有很多永遠循環(或直到你決定停止)的方法,你可以在命令行或腳本中執行此操作。
for
和 while
命令使這件事非常容易。關於相應的語法和策略,只有幾件事要牢記。
使用 while
最簡單的永遠循環之一是使用 while
命令,後面跟上條件 true
。 你不必使用諸如 while [ 1 -eq 1 ]
之類的邏輯或類似的測試。 while true
測試表示循環將一直運行,直到你使用 CTRL-C
停止循環、關閉終端窗口或註銷為止。這是一個例子:
$ while true
> do
> echo Keep running
> sleep 3
> done
Keep running
Keep running
Keep running
^C
你也可以使用 while :
做同樣的事情。這裡的關鍵是 :
總是返回成功,因此就像 while true
一樣,此測試永遠不會失敗,並且循環會繼續運行:
$ while :
> do
> echo Keep running
> sleep 3
> done
Keep running
Keep running
^C
如果你在腳本中插入了無限循環,並想提醒使用它的人如何退出腳本,那麼可以使用 echo
命令添加提示:
while :
do
echo Keep running
echo "Press CTRL+C to exit"
sleep 1
done
使用 for
for
命令還提供了一種永遠循環的簡便方法。雖然不如 while true
明顯,但語法相當簡單。你只需要在有界循環中替換參數即可,它通常類似於 「c 從等於 1 開始遞增,直到 5」:
$ for (( c=1; c<=5; c++ ))
不指定任何參數的情況下:
$ for (( ; ; ))
沒有起始值、增量或退出測試,此循環將永遠運行或被強制停止:
$ for (( ; ; ))
> do
> echo Keep running
> echo 「Press CTRL+C to exit」
> sleep 2
> done
Keep your spirits up
Keep your spirits up
Keep your spirits up
為什麼要永遠循環?
在現實中,你不會想永遠循環下去,但一直運行直到想要回家、工作完成或者遇到問題才退出並不罕見。任何構造為無限循環的循環都可以設置為根據各種情況退出。
該腳本將一直處理數據直到下午 5 點,或者說檢查發現第一次超過 5 點的時間:
#!/bin/bash
while true
do
if [ `date +%H` -ge 17 ]; then
exit # exit script
fi
echo keep running
~/bin/process_data # do some work
done
如果要退出循環而不是退出腳本,請使用 break
命令而不是 exit
。
#!/bin/bash
while true
do
if [ `date +%H` -ge 17 ]; then
break # exit loop
fi
echo keep running
~/bin/process_data
done
… run other commands here …
總結
永遠循環很容易。指定要停止循環的條件卻需要花費一些額外的精力。
via: https://www.networkworld.com/article/3562576/how-to-loop-forever-in-bash-on-linux.html
作者:Sandra Henry-Stocker 選題:lujun9972 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive