什么

echo $?

是指shell编程吗?


当前回答

它是命令的最后一个状态码(退出值)。

其他回答

输出上次执行的unix命令的结果

0 implies true
1 implies false

$ ?返回最后执行命令的退出值。echo $ ?在控制台打印该值。0表示执行成功,而非0值则映射为失败的各种原因。

因此当编写脚本时;我倾向于使用以下语法

if [ $? -eq 0 ]; then
 # do something
else
 # do something else
fi

比较是在等于0或不等于0时进行的。

**基于注释的更新:理想情况下,你不应该使用上面的代码块进行比较,参考@tripleee注释和解释。

参见3.4.2特殊参数中的Bash手册:

? —展开到最近执行的前台管道的退出状态。

有点难找,因为它没有列在$?(变量名是“just”?)当然,还可以查看退出状态部分;-)

快乐的编码。

从http://www.gnu.org/s/bash/manual/bash.html特殊参数

?
Expands to the exit status of the most recently executed foreground pipeline. 

它是命令的最后一个状态码(退出值)。