我尝试过这些命令。
~$top
(ctrl + z)stopped the process
~$echo $?
147
~$top
(ctrl + c)killed the process
~$echo $?
0
这里发生了什么,请解释一下,为什么它显示出一些不变的价值。这些价值观是什么意思。
答案 0 :(得分:20)
$?
是上次运行进程的返回码。 0表示没有发生错误。其他值代表某种不寻常的情况。
值128及以上通常代表某种信号。 147 - 128 = 19,表示程序接收到信号19(Linux上为SIGSTOP
)。现在,通常按^ Z发送SIGTSTP
(来自SIGSTOP
的不同信号),这可能意味着top
捕获了该信号,做了一些(可能与终端相关)清理,并重新发布{ {1}}实际暂停该计划。
SIGSTOP
也抓住top
(通常在按下^ C后发出),进行清理并干净地退出(退出值为0)。
您可以运行SIGINT
以查看当前平台的所有信号编号。请注意,不同平台的数字不同;例如,kill -l
在Darwin上是17,在Linux上是19。
答案 1 :(得分:5)
echo $?
返回上次执行的命令的返回值(退出状态)(0通常是success
)。