【发布时间】:2023-04-03 05:16:01
【问题描述】:
我有一个 while 循环,它逐行读取文件并将该行传递给循环内的多个函数或嵌套函数。如果其中一个函数发现有问题,我希望 while 循环跳过该迭代并转到下一个迭代。
我确实进行了很多搜索并尝试了不同的方法,但使用 'continue 跳过 while 循环是唯一的解决方案,但它似乎没有帮助。我不确定在哪里或如何寻找这样的东西。是否有解决此问题的解决方案或不同的方法?感谢您的帮助。
function2(){
"if some condition that uses $test_name fails, skip the while loop"
}
function3(){
do something
}
main_function (){
do something to $test_name
function2 $test_name
function3 $test_name
}
while true read -r line; do
if [[ ! "${line}" =~ ^# && ! -z "${line}" ]]; then
test_name=$line
main_function $test_name
fi
done < $OS_LIST
【问题讨论】:
-
确保您的函数都返回有效的成功 (0) 或失败(非零)代码。让 main_function 每个都以
func $arg || return 1或类似的方式执行,这样它就不会在一个失败后继续运行测试。然后调用 main 为main_function $arg || continue。 -
我猜你回答了我问安德烈的问题,非常感谢你的清晰解释,我会的。
-
我不知道为什么这个问题被否决了,有人可以帮帮我吗?
-
如果您希望我提交一个完整的示例,请告诉我。
-
不知道反对票。如果我不得不猜测,我会说阅读 this 解释为什么你应该提供简短但明确的证据来证明你所做的研究。
标签: bash shell while-loop continue