什么是echo $?在linux终端?

sak*_*thi 8 linux

我试过这些命令.

~$top
(ctrl + z)stopped the process
~$echo $?
147
~$top
(ctrl + c)killed the process
~$echo $?
0
Run Code Online (Sandbox Code Playgroud)

这里发生了什么,请解释一下,为什么它显示出一些恒定的价值.这些价值观的含义是什么?

Chr*_*ung 21

$?是上次运行进程的返回码.0表示没有发生错误.其他值代表某种不寻常的条件.

值128及以上通常代表某种信号.147 - 128 = 19,表示程序接收到信号19(SIGSTOP在Linux上).现在,通常按^ Z发送SIGTSTP(来自不同的信号SIGSTOP),这可能意味着top捕获了该信号,做了一些(可能与终端相关)清理,并重新发布SIGSTOP以实际暂停程序.

top也被捕获SIGINT(通常在按下^ C后发出),进行清理并干净地退出(退出值为0).


您可以运行kill -l以查看当前平台的所有信号编号.请注意,不同平台的数字不同; 例如,SIGSTOP在Darwin上是17,在Linux上是19.


Ido*_*dos 5

echo $?返回最后执行的命令的返回值(退出状态)(通常为0 success)。