共计 1132 个字符,预计需要花费 3 分钟才能阅读完成。
导读 | 命令的返回值是其退出状态,退出状态用于检查命令执行的结果(成功 / 失败)。如果退出状态为 0,则命令执行成功。如果命令失败,则退出状态为非零。 |
下面表格中是返回值对应着退出状态的解释:
返回值 | 退出状态 |
---|---|
0 | 成功 |
非 0 状态 | 失败 |
2 | 用法不正确 |
126 | 不是可执行文件 |
127 | 没有找到指令 |
$? 特殊变量
shell 中的变量名 $?
是一个特殊的内置变量,可以获取最后一次执行命令的退出状态。
- 在执行 shell 函数后,
$?
返回函数中最后一次执行命令的退出状态。 - 在执行 shell 脚本后,
$?
返回脚本中最后一次执行命令的退出状态。
包含退出状态的脚本实例
以下 exit_status.sh
脚本显示了几种退出状态:
[root@localhost scripts]# vim exit_status.sh | |
#! /bin/bash | |
echo -e "Successful execution" | |
echo -e "=====================" | |
echo "hello world" | |
# 退出状态为 0,因为命令执行是成功的。echo "Exit status" $? | |
echo . | |
echo -e "Incorrect usage" | |
echo -e "=====================" | |
ls --option | |
# 使用了错误的用法,所以退出状态为 2。echo "Exit status" $? | |
echo . | |
echo -e "Command Not found" | |
echo -e "=====================" | |
bashscript | |
# 退出状态为 127,因为该脚本或者命令不存在。echo "Exit status" $? | |
echo . | |
echo -e "Command is not an executable" | |
echo -e "=============================" | |
touch execution.sh | |
ls -l execution.sh | |
./execution.sh | |
# 退出状态为 126,因为该文件没有执行权限。echo "Exit status" $? | |
echo . | |
echo -e "Custom status" | |
echo -e "=====================" | |
function test1(){if [ ! -x "./execution.sh"]; then | |
echo "\"./execution.sh\"no execute permission!!" | |
return 66 | |
fi | |
} | |
test1 | |
# 退出状态为 66,函数 test1 中判断文件是否不存在,不存在就返回 echo 语句,并定义了返回值。echo "Exit status" $? |
下面是执行结果后,返回的各种退出状态。
总结
命令的返回值是其退出状态,退出状态用于检查命令执行的结果(成功 / 失败)。如果退出状态为 0,则命令执行成功。如果命令失败,则退出状态为非零。
正文完
星哥玩云-微信公众号
