bash - 在不退出脚本的情况下中断循环(bash)
问题描述
我想运行一个循环来遍历用户列表并在两个检查都通过时执行一个操作。每个检查都写成一个函数,根据检查是否通过,返回是或否。现在我把它设置成这样:
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 和 while 嵌套。我想知道是否有某种方法可以取消 if 语句,以便每次检查如果通过则继续执行该函数,如果不通过则继续执行下一个用户,这样代码就会像这样运行;
for user in users
do
check_1
check_2
some_function
done
直觉上我觉得这是更好的代码风格。我对么?这可行吗?有没有更好的办法?
编辑:我正在结束这个问题,因为它似乎是由于对 bash 的根本误解造成的。抱歉,已经有一段时间了。
解决方案
假设check_1
,check_2
等是在失败时返回非零状态的命令;ERR 陷阱可能会有所帮助。例如:
trap continue ERR
for user in users; do
check_1
check_2
...
done
trap - ERR
推荐阅读
- c - 计算每个子目录的文件数 - C (POSIX) 中的程序
- python - 如何从 os.path.dirname(__file__) 返回的路径中删除 PythonCode?
- python - 是否有另一种方法可以在列表中添加元素,再次调用时值会改变?
- post - 使用 EmailOctopus 发布 HTTP 请求 cURL
- angular - 在某些 ngrx 表单控件中分离订阅/网络套接字更新
- mysql - 数据库内容不显示
- paypal - PayPal Website Payments Pro:快速结账:如何在 Paypal 中隐藏“购买详情”?
- python - 如何在单独的行上打印最后一行代码?
- npm - 如何配置 npm 以搜索导出的模块?
- python - 熊猫没有从数据框中获取正确的结果