这个问题很简单。我可以通过使用获取上一个命令的退出代码$?
。但它到底是什么?
我不认为它是一个变量,因为除了 . 之外,你不能在变量名称中包含任何特殊字符_
。
foo?foo=10
将导致错误:foo?foo=10: command not found
那么如果它不是一个变量,它是什么?还有其他类似的吗?
这个问题很简单。我可以通过使用获取上一个命令的退出代码$?
。但它到底是什么?
我不认为它是一个变量,因为除了 . 之外,你不能在变量名称中包含任何特殊字符_
。
foo?foo=10
将导致错误:foo?foo=10: command not found
那么如果它不是一个变量,它是什么?还有其他类似的吗?
它是什么?
$?
是一个内置变量,用于存储命令、函数或脚本本身的退出状态。$?
读取最后执行的命令的退出状态。函数返回后,$?
给出函数中执行的最后一个命令的退出状态。这是 Bash 赋予函数“返回值”的方式。它返回成功或错误0
范围内的整数。1 - 255
其他人也一样吗?
是的,bash 中有几个这样的内置变量。您可以在此处查看列表。参考: http ://www.tldp.org/LDP/abs/html/exit-status.html
$?
是一个变量但是一个特殊的变量,这就是允许使用特殊字符的原因。($?)
扩展到最近执行的前台管道的退出状态。它不是唯一的,shell 对几个参数进行了特殊处理。这些参数仅供参考;不允许分配给他们:
资料来源:
$?
是 bash 中的一个特殊变量,它始终保存最后执行的命令的返回/退出代码。您可以通过运行在终端中查看它
echo $?
。返回码在 [0; 255]。
返回码
0
通常意味着一切正常。其他值表示错误。大多数应用程序返回
1
或自定义值。如果未找到命令,则变量通常包含127
如果您想将此变量设置为特定值,您可以轻松地使用
bash -c "exit 5"
返回代码来执行此操作5
。$?
是一个特殊的shell 参数(变量)。通常,所有用户定义的变量必须仅使用字符类
[:alnum:]
ie中的字符命名[a-zA-Z0-9_]
(也不能以 开头[0-9]
)。简而言之,
$?
是一个特殊变量(其中有很多)可以被视为 shell 本身的内部特征,它提供前一个命令的退出代码(无论成功还是失败)。您可以阅读本文以了解有关变量的更多信息。