出错时跳出 while 循环

出错时跳出 while 循环

我有一个while这种形式的循环:

while :; do
   performTask1 || break
   performTask2 || break
   performTask3 || break
   ...
   performTaskX || break
done

基本上,只要其中一项任务出错,我就想跳出循环。有更好的方法来实现这一目标吗?

我想另一种方法是:

while :; do
   performTask1 && performTask2 ... && performTaskX || break
done

然而,这对我来说仍然很难看。

答案1

本质上,您是说如果任务失败,则后续任务不应执行。无需中断,只需使任务依赖于前面任务的成功完成即可:

while
  performTask1 &&
  performTask2 &&
  ...
  performTaskX-1 &&
  performTaskX
do :; done

没有必要把所有任务都放在一行...这种形式在我看来并不难看。

答案2

set -e
while :; do
   performTask1
   performTask2
   performTask3
   ...
   performTaskX
done
set +e

这将退出您的整个脚本如果有任何错误。

如果这不是脚本的最后一部分,您可以使用:

while performTask1 &&
    performTask2 &&
    performTask3 &&
    ... &&
    performTaskX
do
  :
done

另请参阅:

相关内容