Shell 脚本进阶:函数与常见陷阱

前言 会写脚本和写好脚本之间,隔着无数深夜的坑。这篇把 Bash 的函数进阶用法和那些"约定俗成但没人明说"的陷阱一次讲清。 一、函数的正确写法 #!/usr/bin/env bash # 定义(function 关键字可省, 括号必须有) function log() { # local 变量: 不污染全局 —— 函数内赋值一律 local! local level=$1 msg=$2 printf '[%s] [%s] %s\n' "$(date '+%F %T')" "$level" "$msg" } # 调用(参数像脚本参数一样传) log INFO "服务启动" log ERROR "连接超时" 参数与返回值: ...

2025-09-06 · 4 min · zy

Bash 实战:服务器巡检脚本

前言 学了变量、条件、三剑客,是时候写个真正有用的东西了。下面是一个我维护了两年、持续迭代的服务器巡检脚本——每台机器上一份,cron 每天跑,异常发告警。 ...

2024-11-02 · 5 min · zy

Bash 脚本入门:变量、条件与循环

前言 会写 Bash 脚本,是运维和后端开发日常效率的分水岭。这篇把最核心的语法要素串一遍,看完能写出规范、能跑的脚本。 一、脚本骨架 从一个标准骨架开始: #!/usr/bin/env bash # 描述: 演示脚本骨架 set -euo pipefail # 出错即停 + 未定义变量报错 + 管道错误传递 LOG_FILE="/var/log/myapp.log" log() { echo "[$(date '+%F %T')] $*" | tee -a "$LOG_FILE" } main() { log "脚本开始" # ... 业务逻辑 log "脚本结束" } main "$@" 三件套说明: ...

2023-04-08 · 3 min · zy