将常用运维操作封装为shell函数,优先处理多步固定操作、复杂参数命令和需安全校验的高危动作;采用func_name() { ... }定义,用local设默认参数、-print预览、交互确认;通过source加载至shell环境后可直接调用;进阶需加set -euo pipefail、区分echo与return、支持选项解析及local变量隔离。

把常用运维操作封装成函数,核心是用 Shell 函数把重复性高、参数易变、逻辑清晰的命令组合打包,让调用像执行普通命令一样简单。重点不在“写得多”,而在“用得稳、改得快、看得懂”。
选好封装对象:优先处理这三类操作
不是所有命令都值得封装,优先考虑:
- 带固定模式的多步操作:比如“查进程→杀进程→重启服务”,每步命令固定,只变服务名;
-
参数复杂难记的命令:如
find -name "*.log" -mtime +7 -delete,每次敲易漏参数; - 需要安全校验的高危动作:比如清理容器、删除日志前先预览、确认、跳过关键路径。
定义函数:两种写法,推荐后者
用 func_name() { ... } 形式更通用、更简洁,几乎所有 Shell 都支持:
clean_logs() {
local days=${1:-7}
echo "将删除 $days 天前的日志文件"
find /var/log -name "*.log" -mtime +$days -print
read -p "确认执行? (y/N) " -n 1 -r
echo
if [[ $REPLY =~ ^[yY]$ ]]; then
find /var/log -name "*.log" -mtime +$days -delete
echo "清理完成"
else
echo "已取消"
fi
}
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
注意:local days=${1:-7} 表示第一个参数默认为 7,避免空值出错;-print 先预览,不直接删。
让函数真正可用:加载与调用
函数写完不能直接用,得让它进入当前 Shell 环境:
- 保存为
~/bin/ops.sh(建议统一放个人 bin 目录); - 在
~/.bashrc或~/.zshrc末尾添加:source ~/bin/ops.sh; - 执行
source ~/.bashrc生效; - 之后就能直接运行:
clean_logs 30(删 30 天前日志)或clean_logs(用默认 7 天)。
进阶技巧:提升健壮性和复用性
生产环境用的函数,加几行小改进就大不一样:
-
加错误检查:开头加
set -euo pipefail,命令失败立即停,变量未定义报错; -
区分输出与返回值:用
echo输出结果(供$(...)捕获),用return 0或return 1表示成功/失败; -
支持选项解析:用
while [[ $# -gt 0 ]]; do case $1 in -h) ... ;; --dry-run) ... ;; esac; shift; done处理-h或--dry-run; -
避免污染全局变量:所有中间变量尽量用
local声明,尤其在嵌套调用时。










