📅  最后修改于: 2023-12-03 15:41:28.843000             🧑  作者: Mango
在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中,获取最后一个退出代码对于错误处理和调试非常有帮助。我们可以使用$?
变量来获取上一个命令的退出代码,并根据需要采取适当的行动。在脚本中,我们可以使用该变量来检查命令是否成功执行,然后执行相应的操作。