好的,我知道我之前问过类似的问题,我明白如何创建一个无限循环:
while [ 1 ]
do
foo
bar
then
sleep 10
done
但是如果我想在这个循环中运行一些(相当多的)IF ELSE语句,完成后如何让脚本继续循环,我该怎么做?
好的,我知道我之前问过类似的问题,我明白如何创建一个无限循环:
while [ 1 ]
do
foo
bar
then
sleep 10
done
但是如果我想在这个循环中运行一些(相当多的)IF ELSE语句,完成后如何让脚本继续循环,我该怎么做?
while :; do
if cond1; then
whatever
elif cond2; then
something else
else
break
fi
done
while true
或其简写形式:
来进行无限循环。而[ 1 ]
则过于复杂,不是你想象中的那样([ 0 ]
同样为真!)。记住,在if
和while
语句中,条件是任意命令,其退出状态(零=真,非零=假)被用作条件值,[
只是特殊的test
命令的别名(在大多数shell中内置,但不一定要这样)。do
/done
之间允许使用任何shell构造,包括条件语句、更多的循环和case语句。break
来从内部终止最内层的循环(就像大多数其他语言一样)。if [ 一些测试 ]; then 某些命令; fi
。while [ 1 ]
do
if [ some test ]
then
some command
else
other cmd
fi
sleep 10
done
if some test; then some command; fi
。方括号[
是一个用于比较值和检查文件是否存在的命令,但有许多情况下你可能需要使用一些任意的命令(如which
、grep
等),或者test
命令无法满足需求,这时你可能会转而使用expr
命令。 - Jan Hudec修正chown案例,添加了break来结束循环 已修正
while [ 1 ]
do
if [ some test ]
then
some command
brake
else
other cmd
fi
sleep 10
done
while
/do
/done
中即可。如果您打算使用 Ctrl-C(或任何其他终止它的方法)退出它,也许可以看一下trap
命令。 - Jan Hudec