![shell 中的“$?”是什么意思?](https://linux22.com/image/1276937/shell%20%E4%B8%AD%E7%9A%84%E2%80%9C%24%3F%E2%80%9D%E6%98%AF%E4%BB%80%E4%B9%88%E6%84%8F%E6%80%9D%EF%BC%9F.png)
我正在使用 Debian 6.0。我知道常规命令行参数,但找不到它们的用途?有人知道Linux shell 中$?
的 是什么意思吗?$?
答案1
狂欢, 不是壳. (Bash 只是几种可能的 shell 之一。但它是最常见的)
它表示最后执行的命令的退出代码。
看这里:http://tldp.org/LDP/abs/html/othertypesv.html和这里http://tldp.org/LDP/abs/html/exit-status.html
答案2
对于支持此 shell 变量的 shell,“$?”包含最近执行的命令的返回代码。
因此,如果你正在运行程序“abc”,它在退出时返回 1
$ echo $?
给出“1”-返回代码。
而且它不仅仅在bash中有,其他shell也有这个功能。
答案3
最后执行的程序的返回代码。
答案4
哇,他们提到这是最后执行的程序的返回代码,但没有人提到如果它大于 0,则可能表示有错误。通常的做法是,当程序或脚本执行时没有错误,它会返回 0 值来表示它已完成且没有错误。并非所有程序和脚本都是这样,但它们应该这样做。
运行 Linux 命令后检查 $? 的值应该会告诉您是否有错误。检查每个程序的文档以了解可能的返回值。有些不会返回值,但大多数都会返回。在您的脚本中,您应该以“return X”结尾,其中 X 是某个值 0=良好/无错误,任何大于零的值都表示发生了一些问题。即使您使用的都是 0 或 1 的值,这也是很好的做法。这允许其他脚本根据上一个命令的成功或失败来知道是否应该执行下一行/命令。它使脚本更智能,控制更好。