如何获取pid并处理最后一个shell命令的exist代码
我知道!能给我最后一个命令的pid,和$?将给我上一个命令的退出值,但如何在一个shell命令中同时获得这两个值?谢谢简短回答 不可能在一个命令中同时获得PID和退出状态。您至少需要两个命令:一个用于保存PID(如何获取pid并处理最后一个shell命令的exist代码,shell,Shell,我知道!能给我最后一个命令的pid,和$?将给我上一个命令的退出值,但如何在一个shell命令中同时获得这两个值?谢谢简短回答 不可能在一个命令中同时获得PID和退出状态。您至少需要两个命令:一个用于保存PID($!),另一个用于等待并获取退出代码($?) 说明 根据报告: 扩展为从当前shell执行的最新后台命令(请参见列表)的十进制进程ID 所以$没有扩展到“最后一个命令的PID”,例如,您需要在命令之后使用&安排一个命令在后台执行 在命令退出之前,不可能获取它的退出代码——我们需要等待。w
$!
),另一个用于等待
并获取退出代码($?
)
说明
根据报告:
代码>扩展为从当前shell执行的最新后台命令(请参见列表)的十进制进程ID
所以<代码>$
没有扩展到“最后一个命令的PID”,例如,您需要在命令之后使用&
安排一个命令在后台执行
在命令退出之前,不可能获取它的退出代码——我们需要等待。wait
命令
返回最后一个ID的状态;如果ID无效或
给出了一个选择
(其中,ID
是传递给命令的最后一个位置参数。)
示例
ls >/dev/null 2>&1 &
pid=$!
wait $pid
exit_code=$?
printf 'PID: %d Exit code: %d\n' $pid $exit_code
简短回答 不可能在一个命令中同时获得PID和退出状态。您至少需要两个命令:一个用于保存PID(
$!
),另一个用于等待
并获取退出代码($?
)
说明
根据报告:
代码>扩展为从当前shell执行的最新后台命令(请参见列表)的十进制进程ID
所以<代码>$
没有扩展到“最后一个命令的PID”,例如,您需要在命令之后使用&
安排一个命令在后台执行
在命令退出之前,不可能获取它的退出代码——我们需要等待。wait
命令
返回最后一个ID的状态;如果ID无效或
给出了一个选择
(其中,ID
是传递给命令的最后一个位置参数。)
示例
ls >/dev/null 2>&1 &
pid=$!
wait $pid
exit_code=$?
printf 'PID: %d Exit code: %d\n' $pid $exit_code
试试:
命令&;echo$!&echo$?
。请尝试:命令&;echo$!&echo$?
。