什么

echo $?

是指shell编程吗?


当前回答

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

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

其他回答

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

0 implies true
1 implies false

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

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

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

快乐的编码。

echo $ ?-给出最近执行的命令的EXIT STATUS。这个EXIT STATUS很可能是一个数字,其中0表示成功,任何非0值表示失败

吗?-这是bash中的一个特殊参数/变量。

$ ?-它给出存储在变量"?"中的值。

BASH中一些类似的特殊参数有1、2、*、#(通常在echo命令中可以看到$1、$2、$*、$#等)。

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

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

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

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

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

这是上次执行命令的退出状态。

例如,命令true总是返回0状态,false总是返回1状态:

true
echo $? # echoes 0
false
echo $? # echoes 1

从手册:(通过在shell中调用man bash来访问)

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

按照惯例,退出状态为0表示成功,返回状态为非零表示失败。在维基百科上了解更多关于退出状态的信息。

还有其他类似的特殊变量,你可以在这个在线手册上看到:https://www.gnu.org/s/bash/manual/bash.html#Special-Parameters