在查看一个 shell 脚本时,我看到了术语“$?”。这个词有什么意义呢?
答案1
$?
扩展到最近执行的前台管道的退出状态。请参阅Bash 手册的特殊参数部分。
简单来说,它是最后一个命令的退出状态。
答案2
CJM的回答是正确的,但$?
可以在 shell 脚本中以愚蠢的方式使用,我想警告不要这样做。许多糟糕的 shell 脚本都有重复的代码模式:
run_some_command
EXIT_STATUS=$?
if [ "$EXIT_STATUS" -eq "0" ]
then
# Do work when command exists on success
else
# Do work for when command has a failure exit
fi
如果可能的话(有时会影响可读性),您应该以不同的方式编码这种情况:
if run_some_command
then
# Do work when command exists on success
else
# Do failure exit work
fi
后一种用法速度更快,不会用相当于临时变量的内容污染 shell 的变量命名空间,通常对人类来说更具可读性,并鼓励使用“正逻辑”,即编写不带否定的条件语句的做法,这具有认知性大多数情况下都很简单。它$?
在很大程度上消除了使用。
答案3
$?
- 最后执行的命令的退出状态。
$0
- 当前脚本的文件名。
$#
- 提供给脚本的参数数量。
$$
- 当前 shell 的进程号。对于 shell 脚本,这是执行它们的进程 ID。
答案4
$?在提示时向我们提供最后执行命令的执行状态。值“0”表示命令执行成功,“1”表示命令执行不成功。