两种语法“$!”的区别和“$?”

the difference between the two syntax "$!" and "$?"

我一直在研究 Shell,我看到了类似的东西:

pid_A2=$!
wait $pid_A2
pid_A2=$?

能否解释一下“$!”这两种语法的区别?和“$?”... 实际上,我知道 $?是前一个命令的退出状态,但我从未见过前一个命令。

$?: 上次进程执行的状态

$!: 后台最后一个命令的pid

$! 是后台进程的最后一个作业。例如:

$ sleep 1000 &
[1] 6646    ---> process id

echo "$!" 将打印最后一条命令的进程 ID(此处为 6646)。

$? returns 最近执行的命令的退出值。 $? 用于处理命令或函数的 return 值。例如:

if [ **$?** -eq 1 ];
then
    # do something
fi