Linux中的退出状态($?)变量
“$?”是一个保存最后执行命令的返回值的变量。 “回声$?”如果最后一条命令已成功执行,则显示 0,如果发生某些错误,则显示非零值。 bash 设置“$?”到最后执行的进程的退出状态。按照惯例,0 是成功退出,非零表示某种错误。它可用于检查上一个命令是否已执行且没有任何错误。如果它成功执行,那么它存储 0。“$?”在 shell 脚本中也很有用,作为一种根据最后执行的命令如何通过检查退出状态来决定要做什么的方法。
使用“$?”运算符
1.系统启动且尚未执行命令时,其默认值为0。即使最后一条命令没有成功执行并重新启动系统,当在终端中输入以下命令时,我们也会得到它的值为 0。
echo $?
2.返回上次执行命令的退出状态。在下面提到的示例中,UNIX 中没有eccho命令,因此最后一个进程没有成功执行。那么$?存储一个非零值,它是上次执行命令的退出状态。
eccho
echo $?
3.在下面的例子中,如果文件存在(可以是目录或文件),那么“ls”命令的返回值将为0(即命令已成功执行),否则将显示一个数字这是非零。数量取决于程序。参考下图,考虑默认情况下“文件”不存在,然后 $?存储返回值 2(该命令未成功执行),但一旦使用 touch 创建,它会显示 0,因为 ls 命令返回 0,因为文件存在。
ls file
echo $?
touch file
echo $?
4.此外,当我们在终端中输入简单的真假值时,它显示 0 作为真除了退出状态代码 0 之外什么都不做。但是如果我们给出 false 那么 1 将被打印为状态代码 1 的假退出。
true
echo $?
false
echo $?