Shell 健壮性与错误处理
Shell脚本与文本处理#Shell健壮性#错误处理约 499 字 · 1 分钟阅读
追问显示点击任意追问卡片可收起 / 展开
set -e、set -u、set -o pipefail 分别有什么作用?
追问 为什么启用这些选项后仍不能替代完整的错误处理?
管道中前一个命令失败时,为什么脚本可能仍然返回成功?
追问 如何使用
pipefail 和状态检查避免漏报?脚本如何确保以正确退出码结束?
追问 函数内部失败、子命令失败和主流程失败应如何传递状态?
如何在脚本中实现重试和退避?
追问 网络请求、服务启动和锁竞争场景下,重试次数和间隔应如何设计?
如何避免脚本重复执行导致数据或服务异常?
追问 锁文件、
flock、幂等判断和超时清理分别如何使用?Shell 脚本中的命令注入风险来自哪里?
追问 变量拼接、用户输入、
eval 和不安全临时文件分别有什么风险?如何安全地处理包含通配符、换行和特殊字符的变量?
追问 为什么文件路径变量通常需要加双引号?
如何在脚本中检查依赖命令是否存在?
追问 检查
command -v、权限、版本和运行环境分别有什么意义?如何为脚本增加 dry-run 模式?
追问 预览模式必须保证哪些副作用不会发生?
如何调试一个只在 cron 中失败的 Shell 脚本?
追问 PATH、工作目录、环境变量、用户、Shell 解释器和输出日志如何检查?