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

时间:2011-11-03 20:01:14

标签: bash shell if-statement while-loop infinite-loop

好的,我知道我问了一个类似的问题,我理解如何做一个无限循环:

while [ 1 ]
do
    foo
    bar
        then
sleep 10
done

但是如果我想在这个循环中运行一些(相当多的)IF ELSE语句,一旦完成后我怎么能让脚本继续循环?

3 个答案:

答案 0 :(得分:4)

while :; do
    if cond1; then
        whatever
    elif cond2; then
        something else
    else
        break
    fi
done
  1. 使用while true或使用true的较短别名:进行无限循环。 [ 1 ]不必要地复杂化,而不是你认为的那样([ 0 ]也是如此!)。请记住,ifwhile中的条件是任意命令,其退出状态(零= true,非零= false)用作条件值,[只是特殊{{{1}的别名1}}命令(两者都内置在大多数shell中,但它们不一定是这样)。
  2. test / do之间允许任何shell构造,包括条件,更多循环和案例。
  3. 使用done从内部终止最内层循环(就像大多数其他语言一样)。

答案 1 :(得分:0)

在bash中的if只是:if [ some test ]; then some_command; fi

while [ 1 ]
do
    if [ some test ]
    then
        some command
    else
        other cmd
    fi
sleep 10
done

Bash Scripting Guide

答案 2 :(得分:0)

对chown case的更正添加了制动器来完成循环 校正

while [ 1 ]
do
    if [ some test ]
    then
        some command
    brake
    else
        other cmd
    fi
sleep 10
done