为什么使用“$?”时会出现“ls”命令未找到的情况?

为什么使用“$?”时会出现“ls”命令未找到的情况?

分配问题:

在终端中执行“good”和“ls”并检查执行状态

我做了什么

good;$?

输出:

zsh: command not found: good
zsh: command not found: 127

ls;$?

输出:

quiz.sh
zsh: command not found: 0

如果此命令存在,那么为什么我会收到“ls”未找到命令?

答案1

您没有收到“未找到命令”的信息ls。您可以在那里看到输出ls。你得到command not found0,这就是$?扩展到。

$?是上一个命令的状态。运行后ls,状态为0,因为没有错误。运行后good,状态为 127,这是 shell 在未找到命令时使用的状态。

如果你想显示状态,你需要告诉 shell 你想要做的就是显示它。这正是该echo命令的用途。

good; echo $?
ls; echo $?

答案2

$?是上一个命令的返回码。如果你想它,你需要echo $?。它通常用在if语句中(0遗憾的是,where = true)。

相关内容