我想运行一系列测试(每个测试在不同的 PID 上),并且仅当所有测试成功退出时才得出成功状态。就像是
check $PID1 && check $PID2 && check $PID3
Run Code Online (Sandbox Code Playgroud)
但对于不确定数量的测试。我怎样才能做到这一点?
写成一个循环应该不会太难:
pids=(1025 3425 6474)
check_all() {
for pid in "$@"; do
if ! check "$pid"; then
return 1
fi
done
}
check_all "${pids[@]}"
Run Code Online (Sandbox Code Playgroud)
与 链接的命令链一样&&
,该函数将在第一次失败时停止check
。
虽然请注意我替换了你的变量PID1
,PID2
等有一个单一的阵列。Bash 可以迭代名称以特定字符串开头的变量,但数组更方便。(除非这些变量来自脚本的外部,通过您无法传递正确数组的环境。)
另外,我check
在这里对循环中的命令进行了硬编码。您可以为要运行的函数传递不同的命令,但是分词和引号处理的问题已经成熟。(见这里和这里。)
归档时间: |
|
查看次数: |
299 次 |
最近记录: |