Bash scripts are brittle – simple error handling in bash
3 months ago
- #devops
- #error-handling
- #bash
- Bash脚本通常被用作CI/CD流水线或CronJobs中的系统粘合剂
- Bash的默认行为是即使某条命令失败也会继续执行后续命令,这点与其他编程语言不同
- Bash中的`-e`选项可以在命令失败时立即退出脚本
- Bash中的退出码:0表示成功,其他任何数字都表示错误
- 错误处理技术包括`if else`语句、逻辑运算符(`&&`、`||`)和`trap`命令
- Bash中的管道符(`|`)会隐藏命令失败,除非启用`pipefail`选项
- 未定义的变量可能导致问题,使用`-u`选项可将未设置变量视为错误
- 组合使用`set -eEuo pipefail`选项可以提供强大的错误处理机制
- 错误报警至关重要(特别是对定时任务),可使用Slack网页钩子或Notifox命令行工具等