📌  相关文章
📜  获取最后一个退出代码 cmd - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:41:28.843000             🧑  作者: Mango

获取最后一个退出代码 cmd - Shell-Bash

在Shell或Bash脚本中,我们经常需要获取最后一次执行命令的退出代码。这对于调试和错误处理非常有帮助。在本文中,我们将介绍如何使用$?变量来获取最后一个退出代码,以及如何在脚本中使用它。

$?变量

$?是Shell和Bash中的特殊变量,用于存储上一个命令的退出代码。当命令成功执行并返回0时,$?的值为0。否则,$?将包含一个非零值,表示命令的错误类型。

以下是一个获取最后一个退出代码的简单示例:

ls
echo "Exit code: $?"

在此示例中,我们首先执行ls命令,然后输出“Exit code: ”,后跟$?变量。这将打印出ls命令的退出代码。

假设ls命令成功执行,则输出将类似于以下内容:

Exit code: 0

如果命令失败,则输出将包含非零退出代码。例如,假设ls命令在执行时遇到了文件权限错误:

ls /root
echo "Exit code: $?"

此示例将打印以下内容:

ls: cannot open directory '/root': Permission denied
Exit code: 2

注意,在上一个示例中,$?的值为2,这表示命令有错误发生。我们可以根据$?的值采取相应的措施来处理错误。

在脚本中使用$?

在Bash或Shell脚本中,您可以使用$?来获取最后一个退出代码,并根据需要采取适当的行动。

以下是一个示例脚本,该脚本检查是否有名为example.txt的文件。如果文件存在,则输出“File exists”,否则输出“File not found”。

#!/bin/bash

ls example.txt > /dev/null 2>&1
if [ $? -eq 0 ]
then
    echo "File exists"
else
    echo "File not found"
fi

在脚本中,我们首先使用ls命令检查文件是否存在。我们将输出重定向到/dev/null中,以避免在终端中看到输出。然后,我们检查$?的值是否为0,以确定ls命令是否成功执行。如果成功执行,则文件存在。否则,文件不存在。

我们可以运行该脚本,并查看输出结果:

./script.sh

如果文件存在,则输出将类似于以下内容:

File exists

如果文件不存在,则输出将类似于以下内容:

File not found
结论

在Shell和Bash中,获取最后一个退出代码对于错误处理和调试非常有帮助。我们可以使用$?变量来获取上一个命令的退出代码,并根据需要采取适当的行动。在脚本中,我们可以使用该变量来检查命令是否成功执行,然后执行相应的操作。