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),不然磁盘迟早告急。
基本上就这些。脚本不复杂,但容易忽略路径、权限、错误流这些细节。照着步骤走一遍,下次改需求时你就能直接复用结构了。