$ 的含义是什么?在 shell 脚本中?

$ 的含义是什么?在 shell 脚本中?

在查看一个 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”表示命令执行不成功。

相关内容