共计 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,则命令执行成功。如果命令失败,则退出状态为非零。
正文完
星哥玩云-微信公众号