Linux编程Shell之入门——Shell $?:返回值或者上个命令退出状态

589人浏览   2024-06-16 12:37:54

在 Shell 脚本中,$? 是一个特殊变量,表示上一个命令的退出状态。在 Shell 中,命令执行成功通常返回 0,错误和失败则返回非零值(通常是 1)。


在脚本中使用 $? 可以获取上一个命令的退出状态,并根据状态码判断命令的执行结果。具体来说,通常可以将 $? 与条件语句结合使用,来做出相应的判断。例如,可以使用下面的代码块来判断上一个命令是否执行成功:

command
if [ $? -eq 0 ]; then
    echo "命令执行成功"
else
    echo "命令执行失败"
fi

另外,$? 变量还可以与 Exit 命令结合使用,为脚本设置退出状态码。例如,可以使用下面的代码块来设置脚本的退出状态码:

command
if [ $? -ne 0 ]; then
    echo "命令执行失败"
    exit 1
fi

在上述代码块中,如果命令执行失败,就会输出 “命令执行失败” 并退出脚本(exit 1 会将脚本的退出状态码设置为 1)。

需要注意的是,?变量所保存的状态码只与前一个命令的执行结果有关,如果在两个命令之间执行了其他命令,?变量所保存的状态码只与前一个命令的执行结果有关,如果在两个命令之间执行了其他命令,? 变量的值将被覆盖,因此需要及时获取并使用上一个命令的退出状态码。

相关推荐