中断循环而不退出脚本(重击)

时间:2019-11-30 06:18:37

标签: bash loops

我想运行一个循环访问用户列表并在两项检查均通过的情况下执行操作的循环。每个检查都被编写为一个函数,根据检查是否通过,该函数返回是或否。现在,我将其设置如下:

for User in Users
 do
   check_1
   check_2
   if [[ check_1 = yes ]] && [[ check_2 = yes ]]
   then
      perform some function
   fi
done

我想将每个检查都保留为一个函数,而不是将它们显式地写入for循环中,因为它们非常冗长,而这会使ifs,fors和whiles变得非常麻烦。我想知道是否有某种方法可以消除if语句,以便每一次检查通过都可以继续执行该功能,如果没有通过,则继续移至下一个用户,以便代码可以像这样运行;

for user in users
 do
    check_1
    check_2
    some_function
 done

最初,我觉得这是更好的代码样式。我对么?这可行吗?有更好的方法吗?

编辑:我要结束这个问题,因为它似乎是由于对bash的基本误解造成的。抱歉,已经有一段时间了。

1 个答案:

答案 0 :(得分:2)

假设check_1check_2等是在失败时返回非零状态的命令; ERR陷阱可能会有所帮助。例如:

trap continue ERR

for user in users; do
    check_1
    check_2
    ...
done

trap - ERR