BASH Shell 带有 IF ELSE 语句的无限循环

bik*_*ben 3 bash shell if-statement infinite-loop while-loop

好吧,我知道我问过类似的问题,我了解如何进行无限循环:

while [ 1 ]
do
    foo
    bar
        then
sleep 10
done
Run Code Online (Sandbox Code Playgroud)

但是,如果我想在这个循环中运行一些(相当多的)IF ELSE 语句,一旦它们完成,我将如何让脚本继续循环,我将如何处理这个问题?

Jan*_*dec 5

while :; do
    if cond1; then
        whatever
    elif cond2; then
        something else
    else
        break
    fi
done
Run Code Online (Sandbox Code Playgroud)
  1. while true您可以使用或使用 true 的较短别名进行无限循环:[ 1 ]是不必要的复杂,并且不是你想象的那样([ 0 ]也是事实!)。if请记住, and中的条件while是任意命令,其退出状态(零 = true,非零 = false)用作条件值,并且[只是特殊test命令的别名(两者都内置在大多数 shell 中,但它们不必是)。
  2. 任何 shell 构造都允许在条件、更多循环和情况之间do/done包括条件、更多循环和情况。
  3. 用于break从内部终止最内层循环(就像大多数其他语言一样)。