命令行输入错误命令后如何正确获取返回值?
- 主机动态
- 2025-05-29
- 5
命令行输入错误命令的返回值和处理方法
在使用命令行工具时,输入错误的命令是常见的操作失误,系统会通过返回值(Exit Code)反馈执行结果,帮助用户快速定位问题,以下从错误类型、返回值含义、处理方法三个方向详细说明。
错误命令的常见类型与返回值
命令行执行错误时,返回值通常是非零整数(0表示成功),不同错误类型对应不同返回值:
-
命令不存在
- 返回值:127(Linux/Unix)或 9009(Windows)
- 示例:输入 hello(假设不存在该命令) $ hello bash: hello: command not found $ echo $? # 输出返回值 127
-
权限不足
- 返回值:126(Linux/Unix)或 5(Windows)
- 示例:尝试执行无权限的文件 $ ./script.sh bash: ./script.sh: Permission denied $ echo $? 126
-
参数错误

- 返回值:1(通用错误码)
- 示例:git 命令参数错误 $ git --invalid-option error: unknown option `invalid-option' $ echo $? 1
如何获取返回值?
不同操作系统获取返回值的方式略有差异:
Linux/Unix系统
使用 变量获取上一个命令的返回值:
$ invalid_command $ echo $? # 输出127
Windows系统
通过 %ERRORLEVEL% 变量获取:

利用返回值调试与处理错误
返回值是脚本自动化的重要依据,可通过以下方式处理:
条件判断
在脚本中根据返回值执行不同操作:
# Linux示例 mkdir /root/test 2>/dev/null if [ $? -ne 0 ]; then echo "Error: 权限不足或路径无效" fi
逻辑短路(&& 或 ||)
直接关联成功/失败后的动作:
# 仅当命令成功时执行后续操作 git commit -m "message" && git push # 仅当命令失败时执行提示 invalid_command || echo "命令执行失败,请检查输入"
脚本中预设错误处理
通过 trap 捕获异常并统一处理:

trap 'echo "错误代码: $?" > error.log; exit 1' ERR
高级调试技巧
-
启用详细模式
添加 set -x 显示执行细节:
#!/bin/bash set -x # 开启调试 invalid_command set +x # 关闭调试
-
自定义返回值
在脚本中通过 exit 指定返回值:
常见问题解答(FAQ)
-
为什么返回值是127或9009?
系统为不同错误类型分配了预定义代码,命令未找到”在类Unix系统中固定为127。
-
如何查看所有错误码含义?
- Linux:通过 man sysexits 查看标准错误码。
- Windows:参考微软官方文档^1。
-
返回值与输出内容有何区别?
返回值是数字状态码,用于程序判断;是命令打印到终端的文本信息。
引用说明
-