我想运行一系列测试(每个测试都在不同的 PID 上),并且只有在所有测试都成功退出时才能获得成功状态。就像是
check $PID1 && check $PID2 && check $PID3
但是对于不确定数量的测试。我怎样才能做到这一点?
我想运行一系列测试(每个测试都在不同的 PID 上),并且只有在所有测试都成功退出时才能获得成功状态。就像是
check $PID1 && check $PID2 && check $PID3
但是对于不确定数量的测试。我怎样才能做到这一点?
写成一个循环应该不会太难:
与链接的命令链一样
&&
,该功能将在第一次失败时停止check
。虽然请注意我用单个数组替换了您的变量等
PID1
。PID2
Bash 可以遍历名称以特定字符串开头的变量,但数组更方便。(除非这些变量通过您无法传递正确数组的环境来自脚本外部。)另外,我在这里的循环中硬编码了
check
命令。您可以传递不同的命令来运行该函数,但这对于分词和引用处理的问题已经很成熟了。(见这里和这里。)您可以将其放入带有 exit-on-error (
-e
) 的子 shell 中:或者,您可以使用
|| exit 1
代替set -e
:也许:
它将并行运行检查。如果您希望在我们知道结果后立即终止运行检查,请替换
soon
为。now
如果您将 PID 作为管道的输出(每行一个):
parallel
给一个值check
并尽可能多check
地并行运行 (-j0
)。如果服务器尚未安装,请在已
parallel
安装的机器上运行:parallel
编辑
new_script
(最后 5 行)并将脚本复制到服务器。一个简单的函数可以测试每个参数;如果有任何失败,则使用非零代码从函数返回:
通过一些示例测试: