什么是echo $?在linux终端?

时间:2016-02-17 13:24:31

标签: linux

我尝试过这些命令。

~$top
(ctrl + z)stopped the process
~$echo $?
147
~$top
(ctrl + c)killed the process
~$echo $?
0

这里发生了什么,请解释一下,为什么它显示出一些不变的价值。这些价值观是什么意思。

2 个答案:

答案 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)。