在 shell 中,每个命令在执行完毕后都会返回一个退出状态码,用于告诉 shell 命令的执行结果。退出状态码是一个整数值,通常情况下,0 表示命令执行成功,而非 0 则表示命令执行失败或出现了错误。
当你执行一个命令时,可以使用 $?
来获取该命令的退出状态码。例如:
ls /path/to/nonexistent/file
echo $?
这段代码会尝试列出 /path/to/nonexistent/file
,由于该文件不存在,ls 命令执行失败,其退出状态码为 2。因此,上面的代码会输出 2。
常见的命令退出状态码包括:
- 0:表示命令执行成功。
- 1:表示一般性未知错误。
- 2:表示错误的使用命令参数。
- 126:表示命令无法执行,可能由于权限问题或未找到该命令。
- 127:表示找不到命令。
- 128:表示命令执行失败。
- 大于 128 的值:表示命令因收到信号而退出。
你可以使用 man 命令来查看命令的文档,其中会列出命令退出状态码的含义。
在 shell 脚本中,可以使用命令的退出状态码来判断命令执行是否成功,从而进行相应的处理。例如,可以使用 if 语句来判断命令执行是否成功:
if ls /path/to/nonexistent/file; then
echo "File exists"
else
echo "File does not exist"
fi
在上面的例子中,ls /path/to/nonexistent/file
命令会执行失败,因此 if 语句会执行 else 分支,输出 “File does not exist”。