Linux Shell 返回码详解:命令执行的隐形信号

Linux Shell 返回码详解:命令执行的隐形信号

Linux Shell 返回码详解:命令执行的隐形信号

在 Linux Shell 编程中,返回码(Exit Status)是判断命令执行结果的核心机制。它不仅用于错误处理,还能驱动条件分支、日志记录、自动重试等逻辑。理解并合理使用返回码,是编写健壮脚本的基础。

🧠 什么是返回码?

每个命令执行后,都会返回一个整数值(范围 0–255),用于表示执行结果:

0:表示命令执行成功非 0:表示失败或特定错误类型可通过 $? 获取上一条命令的返回码

这种机制让脚本可以根据执行结果做出智能判断。

📋 常见返回码一览表

以下是一些常见的返回码及其含义:

返回码含义示例命令说明0成功ls /etc命令执行成功1通用错误false未指定类型的失败2错误用法grep 无参数命令参数错误126无执行权限./script.sh(无执行权限)文件存在但不可执行127命令未找到nosuchcommand命令不存在128非法退出码exit 300超出范围(被截断为 44)130被 Ctrl+C 中断sleep 10 → Ctrl+C收到 SIGINT137被 SIGKILL 杀死kill -9 强制终止进程139段错误(SIGSEGV)程序崩溃非法内存访问255通用致命错误exit 255通常表示严重失败或未捕获异常

这些返回码不仅反映命令执行状态,还能揭示系统信号(如 SIGINT、SIGKILL)对进程的影响。

🧪 实战示例:判断返回码

在脚本中,我们常用返回码进行条件判断:

ping -c 1 192.168.1.10

if [[ $? -eq 0 ]]; then

echo "✅ 网络正常"

else

echo "❌ 网络异常,返回码:$?"

fi

这种方式可以用于网络检测、文件校验、服务状态判断等场景。

🧩 自定义返回码建议

你可以在脚本中使用 exit 自定义返回码,以便调用者识别错误类型:

if [[ ! -f config.yaml ]]; then

echo "❌ 配置文件缺失"

exit 3 # 自定义错误码

fi

建议使用分层设计:

0:成功1–99:脚本内部错误(参数、逻辑)100–199:外部依赖错误(网络、权限、文件)200–255:致命错误或未处理异常

这种结构有助于后续自动化工具或监控系统快速定位问题。

🧭 高级技巧:信号与返回码的映射

当进程被信号终止时,返回码通常为 128 + 信号编号:

信号编号返回码含义SIGINT2130用户中断(Ctrl+C)SIGKILL9137强制终止SIGSEGV11139段错误

这类返回码可以帮助你识别进程是否因系统信号而异常退出。

相关推荐

密码正确但仍无法连接WiFi的原因与解决方法
bt365官网是多少

密码正确但仍无法连接WiFi的原因与解决方法

📅 08-12 👁️ 6413
了解四种写作风格:如何识别和使用它们
365体育平台bet下载入口

了解四种写作风格:如何识别和使用它们

📅 07-21 👁️ 5225
笔记本电脑一直闪屏要怎么修复?笔记本电脑闪屏的修复方法