Linux脚本自动化核心是识别状态、做出判断、执行动作三步;用if/else判断条件,for/while处理循环,函数封装复用逻辑,并通过set -e、日志和状态码提升可靠性。

Linux脚本自动化,核心不在语法多炫,而在“让机器按你设想的节奏干活”——关键就三点:识别状态、做出判断、执行动作。掌握这三步,90%的日常运维和重复任务都能写成脚本。
用条件判断(if/else)抓住“什么时候该动”
自动化不是无脑执行,而是看情况办事。比如备份前先检查磁盘空间是否够用,日志清理前确认文件是否超过7天。
-
常用判断依据:文件是否存在(
-f 文件名)、目录是否为空(-z "$(ls -A 目录)")、命令是否成功($? -eq 0)、字符串是否相等("$var" = "yes") -
写法要简洁:别堆嵌套,优先用
elif平铺逻辑;测试阶段加echo "DEBUG: 条件成立",避免黑盒运行 -
注意空格:
[ ]里左右必须有空格,[ -f file.txt ]对,[-f file.txt]会报错
用循环(for/while)解决“重复干同一件事”
批量处理是脚本最常露脸的场景:给10个用户加sudo权限、压缩当前目录下所有.log文件、轮询检查服务端口是否响应。
-
for适合已知范围:如
for user in alice bob carol; do useradd $user; done -
while适合不确定次数:比如等待MySQL启动,
while ! nc -z localhost 3306; do sleep 2; done -
别忘控制变量:while里记得更新条件变量,否则容易死循环;for里用
$(ls *.log)不如用for f in *.log更安全(避免空格或特殊字符出错)
用函数+变量封装“可复用的动作块”
把登录检查、日志归档、邮件通知这些操作打包成函数,脚本立刻变清晰、好维护、易调试。
-
函数定义即调用准备:先写
check_disk() { ... },后面直接check_disk就行,不用加() -
变量作用域要留心:默认变量全局可见,想局部化就加
local var="xxx",尤其在函数里改参数时 -
传参靠$1 $2…:调用
backup /data /backup,函数内就能用$1和$2拿到路径,比硬编码灵活得多
加点“防呆”和“反馈”,脚本才真正可靠
没人守着终端时,脚本得自己说清楚“干了啥、卡在哪、要不要重试”。否则出问题只能翻日志猜。
-
开头加
set -e:任意命令失败立即退出,不往下硬跑(配合|| true可绕过个别非关键错误) -
关键步骤加日志:用
echo "$(date): 备份完成" >> /var/log/myscript.log,比只看屏幕输出靠谱 -
结尾返回状态码:成功
exit 0,失败exit 1,方便上层调度器(比如cron或Ansible)判断是否告警
基本上就这些。不复杂,但容易忽略细节。写完跑一遍,再模拟一次失败场景(比如删掉目标文件、断网、磁盘满),脚本能稳住,才算真过关。










