什么是`$?`? 它是变量吗?
问题非常简单。 我可以使用$?
获取上一个命令的退出代码$?
。 但究竟是什么呢?
我认为它不是变量,因为除了_
之外的变量名称中不能有任何特殊字符。
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专门处理几个参数。 这些参数只能被引用; 不允许分配给他们:
Variable Meaning $0 Filename of script $1 Positional parameter #1 $2 - $9 Positional parameters #2 - #9 ${10} Positional parameter #10 $# Number of positional parameters "$*" All the positional parameters (as a single word) * "$@" All the positional parameters (as separate strings) ${#*} Number of positional parameters ${#@} Number of positional parameters $? Return value $$ Process ID (PID) of script $- Flags passed to script (using set) $_ Last argument of previous command $! Process ID (PID) of last job run in background * Must be quoted, otherwise it defaults to $@.
资料来源:
$?
是一个特殊的 shell参数(变量)。
通常,所有用户定义的变量必须仅使用字符类[:alnum:]
的字符来命名,即[a-zA-Z0-9_]
(也不能以[0-9]
开头)。
简而言之, $?
是一个特殊的变量( 并且有很多这些变量)可以被认为是shell本身的内部特征,它提供了前一个命令的退出代码(无论是成功还是失败)。
您可以阅读此内容以了解有关变量的更多信息。
$?
是bash中的一个特殊变量,它始终包含上次执行的命令的返回/退出代码 。
您可以通过运行echo $?
在终端中查看它echo $?
。
返回码在[0; 255]。
返回码0
通常意味着一切正常。
其他值表示错误。 大多数应用程序返回1
或自定义值。 如果未找到命令,则变量通常包含127
如果要将此变量设置为特定值,可以使用bash -c "exit 5"
轻松执行此操作以返回例如返回码5
。