bash虽然循环打破得太早

时间:2015-08-25 03:31:16

标签: bash while-loop

我对bash(一般编程)相对较新,并且大部分都是自学成才,但我有一个while循环,只有在满足所有条件时才会退出。

while  [[ "$var1" != "$var1_tgt" ]] && [[ "var2" != "$var2_tgt" ]] && [[ "$var3" != "$var3_tgt" ]] && [[ "$var4" != "$var4_tgt" ]]; do LOOP...; done

我似乎遇到的问题(我认为)是在循环的评估中。当我运行脚本时,如果只满足其中一个条件,它将会中断,但我希望仅在满足所有条件时才能中断循环。也就是说,当var#等于var var的所有var#_tgt时,循环才会中断。据我所知使用"&&"应该意味着在循环退出之前必须满足所有条件,但是它不起作用的事实意味着我遗漏了一些东西。我很感激任何帮助解决这个问题。

1 个答案:

答案 0 :(得分:1)

您需要将循环更改为:

while  [[ "$var1" != "$var1_tgt" ]] || [[ "var2" != "$var2_tgt" ]] || [[ "$var3" != "$var3_tgt" ]] || [[ "$var4" != "$var4_tgt" ]]; do LOOP...; done

因为如果任何变量尚未达到目标,你想继续循环。

否则,只要其中一个变量达到目标,其中一个条件就会失败,循环就会中断。