Shell脚本运维规范是指在服务器运维、自动化部署、定时任务等场景中,编写和维护 Shell 脚本(如 Bash 脚本)时应遵循的一套标准、约定和最佳实践。它的核心目的是:提高脚本的可读性、可维护性、安全性和稳定性,减少因脚本问题导致的线上故障。
下面从多个维度系统说明常见的 Shell 脚本运维规范。
脚本第一行必须明确指定解释器:
#!/bin/bash
或
#!/usr/bin/env bash
.sh 结尾(可选但推荐)示例:
backup_mysql.sh
deploy_web.sh
755 或 750LOG_DIR="/var/log"
retry_count=3
防止空格和特殊字符引发问题:
rm -rf "$file"
使用变量或配置文件:
BASE_DIR="/data/app"
set -euo pipefail
含义:
-e:命令失败立即退出-u:使用未定义变量报错-o pipefail:管道中任意命令失败即失败if ! mkdir "$dir"; then
echo "创建目录失败"
exit 1
fi
log_info() {
echo "[$(date '+%F %T')] [INFO] $*"
}
rm -rf / 类危险命令# 不安全
rm -rf $dir/
# 安全
[ -d "$dir" ] && rm -rf "$dir"
使用:
if [ $# -ne 2 ]; then
echo "用法: $0 src dst"
exit 1
fi
backup() {
...
}
main() {
backup
}
main "$@"
0 2 * * * /opt/scripts/backup.sh >> /var/log/backup.log 2>&1
# 脚本名称: backup.sh
# 功能: 备份 MySQL 数据库
# 作者: ops
# 更新时间: 2026-01-15
❌ 不规范:
cd /data
rm -rf *
✅ 规范:
set -euo pipefail
BACKUP_DIR="/data/backup"
[ -d "$BACKUP_DIR" ] && rm -rf "$BACKUP_DIR"/*
Shell 脚本运维规范 = 可读 + 可控 + 可恢复 + 不坑人
如果你需要,我也可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。