linux - 后台进程bash的返回码

标签 linux bash shell process

如何获取后台进程的返回值? 如果我这样做,我将得到 0

#!/bin/bash
SomeCommand&
echo $?

输出: #~0

但如果我尝试

SomeCommand
echo $?

输出: #~255

我读过那个等待命令,但如果我这样做

SomeCommand$
wait $!
echo $?

如果上一个命令未完成,我将无法运行下一个命令。

最佳答案

wait 命令等待给定的 background 作业完成。像这样使用它:

( sleep 5; exit 4 ) &
wait $!

ret=$?
echo $ret
4

$! 表示最近后台作业的进程 ID。

在你的情况下你可以这样做:

SomeCommand &
wait $!
echo $?

要启动多个后台作业并稍后检索它们的退出状态,请在启动每个作业后保存 $! 的值。

( sleep 5; exit 4 ) & b1_pid=$!
( sleep 5; exit 21 ) & b2_pid=$!

# More code

wait $b1_pid
b1_exit=$?
wait $b2_pid
b2_exit=$?

关于linux - 后台进程bash的返回码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25909718/

相关文章:

java - 在 linux 平台上使用套接字时是否存在文件描述符泄漏?

bash - Bash 中的只读别名

shell - 永远运行nodejs

bash - 在 docker-machine : terminal vs shell script 中评估

Linux Shell 脚本解压缩和分割文件输出不可读的文件

php - Cron 作业不是每 30 分钟开始一次

bash - Cygwin:如何获取由 CygStart 启动的程序的 PID?

linux - 满足以下要求的 shell 脚本

c++ - GCC 的 -Wpsabi 选项到底有什么作用?压制它有什么影响?

linux - 如何验证传递的参数、值以及参数之间的依赖关系?