linux脚本 自动化 需先明确目标、拆解步骤并手动验证;变量路径须用参数和默认值隔离;必须加错误处理(set - e 与 || 结合);关键步骤加状态提示;定时任务要用绝对路径并完整重定向日志。

Linux 脚本自动化不是写完就能跑,关键是把操作步骤拆解清楚、变量控制住、错误兜得住。下面直接讲实战中真正管用的写法和避坑点。
明确目标再动手:先列清楚“要自动什么”
别一上来就敲#!/bin/bash。先手写三步操作流程,比如:
每一步都要确认命令在终端能手动跑通,再 封装 进脚本。跳过这步,90% 的脚本会在第二步卡住。
变量和路径必须“硬隔离”
别写死 /home/user/logs 这种路径。用变量 + 判断保底:
LOG_DIR="${1:-/var/log/app}"<br>if [[! -d "$LOG_DIR"]]; then<br> echo " 错误:目录 $LOG_DIR 不存在 " >&2<br> exit 1<br>fi
脚本参数($1)、环境变量 ($HOME)、默认值(:- 语法)混着用,既灵活又防误操作。
错误处理不是可选项,是必填项
加 set -e 让脚本遇到报错立刻退出,但得配合 || 做可控容错:
scp server:/tmp/data.tar.gz . || {echo " 拉取失败,跳过分析 "; exit 0;}grep -q "ERROR" "$log_file" && send_alert || echo " 暂无异常 "
关键操作后加echo "[OK] 步骤 X 完成 ",运行时一眼看清断在哪。
定时 + 日志 = 真自动化
脚本写完,扔进 crontab 才算落地:
- 用绝对路径调用脚本:
0 2 * * * /opt/scripts/backup.sh >> /var/log/backup.log 2>&1 - 日志重定向必须带
2>&1,否则错误信息全丢掉 - 首次部署后手动执行一次,检查日志有没有权限拒绝、命令未找到等基础问题
定期清理日志(比如find /var/log/backup.log -mtime +7 -delete),不然磁盘迟早告急。
基本上就这些。脚本不复杂,但容易忽略路径、权限、错误流这些细节。照着步骤走一遍,下次改需求时你就能直接复用结构了。