使用$?在bash中并行运行多个命令时

使用$?在bash中并行运行多个命令时,bash,Bash,我正在为WebSEAL创建一个启动/关闭脚本。它允许同时停止/启动多个实例。唯一的问题是验证它是否已完成且没有问题。对于其他基础设施,我可以简单地在输出中grep一个特定的关键字(我将其重定向到一个日志文件),但是WebSEAL不会给出任何成功/错误消息 相反,我想用美元?将退出状态放入一个动态变量中,该变量将在启动后(在日志合并期间)进行检查 下面是启动/停止然后创建变量的代码 ${PDCOMMAND} >> ${LOGDIR}/${APP}.txt 2>&1 &am

我正在为WebSEAL创建一个启动/关闭脚本。它允许同时停止/启动多个实例。唯一的问题是验证它是否已完成且没有问题。对于其他基础设施,我可以简单地在输出中grep一个特定的关键字(我将其重定向到一个日志文件),但是WebSEAL不会给出任何成功/错误消息

相反,我想用美元?将退出状态放入一个动态变量中,该变量将在启动后(在日志合并期间)进行检查

下面是启动/停止然后创建变量的代码

${PDCOMMAND} >> ${LOGDIR}/${APP}.txt 2>&1 &
let return_${APP}=$?
PDCOMMAND是一个有效的启动/停止命令:又名pdweb start my_实例

APP是实例的名称:aka my_instance

目标是,当我稍后在脚本中检查它时,return${APP}(return${myu_实例)的值将为0(success)或1(failure)

使用$有问题吗?对于在设置时可能尚未在技术上完成的命令,或是在完成时设置的命令?假设我有3个例子

实例1、实例2、实例3

如果我运行以下命令:

pdweb start instance1 &
let return_instance_1 = $?
pdweb start instance2 &
let return_instance_2 = $?
pdweb start instance_3 &
let_return_instance_3 = $?
如果返回的_instance_u1;[1 | 2 | 3]开始的时间不相等,它们的值是否正确?例如,如果实例_3在实例_1之前启动,它还会输出实例_3的结果以返回实例_3吗

基本上,我试图弄清楚命令行如何处理与退出状态相关的异步请求


提前感谢

否;退出状态代码仅在命令完成时可用。(这就是为什么它被称为“退出状态”。)如果您成功生成了一个服务,并且它已启动并正在运行,那么它还没有退出状态


如果我能够正确地猜出您想要实现的目标,您就可以获得
$的价值启动每个实例后,等待“合理”的时间(几秒钟?),并检查您启动的进程是否仍在运行。如果它们已终止,则会出现问题。

顺便说一句,等号周围不能有空格。我想我要做的是使它们不再平行。这种方法更适合WebSphere,因为它通常需要几分钟的启动时间。在并行启动时,我将每个pid放入一个数组中,然后将每个pid写入一个状态文件。循环完成后,我运行另一个循环来等待每个pid。这样,操作员就可以运行一个状态脚本来检查该文件,看看还有什么在等待。使用WebSEAL,启动/停止时间要快得多,因此无需并行启动它们。如果我删除&,则$?我想应该设置得很好。谢谢