今天目标:学会把脚本写得像企业级一样规范,可复用、可维护、出问题能快速排查。
一、函数 function(模块化、复用)
把重复代码封装成函数,调用一次就能执行红旗 linux,不用重复写。
1. 函数语法
# 定义函数
函数名() {
代码
}
# 调用函数
函数名
2. 实战:封装日志函数(最常用)
#!/bin/bash
# 定义日志函数
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
}
# 调用
log "脚本开始运行"
log "正在创建目录"
mkdir test
log "目录创建完成"
运行效果:
[2026-03-26 22:10:05] 脚本开始运行
[2026-03-26 22:10:05] 正在创建目录
[2026-03-26 22:10:05] 目录创建完成
二、函数传参
和脚本参数一样,用 $1 $2…
myfunc() {
echo "参数1:$1"
echo "参数2:$2"
}
myfunc "hello" "linux"
三、脚本输出到日志文件(企业必备)
让脚本既显示在屏幕,又写入日志:
#!/bin/bash
LOG_FILE="/tmp/script.log"
# 输出并写日志
echo "信息" | tee -a $LOG_FILE
完整版规范脚本
#!/bin/bash
LOG="/tmp/run.log"
log() {
echo "[$(date '+%F %T')] $1" | tee -a $LOG
}
log "脚本启动"
log "测试信息"
log "脚本结束"
四、异常处理:命令失败就退出
防止脚本出错后继续执行linux系统错误日志,导致更大问题:
#!/bin/bash
set -e # 命令执行失败,立即退出脚本
log "开始"
mkdir /root/test # 没权限会直接退出
log "结束"

五、企业级脚本模板(直接套用)
#!/bin/bash
set -e
LOG="/tmp/auto_backup.log"
log() {
echo "[$(date '+%F %T')] $1" | tee -a $LOG
}
backup() {
DATE=$(date +%Y%m%d)
tar -zcvf backup_$DATE.tar.gz /home
log "备份完成"
}
# 主流程
log "========== 脚本开始 =========="
backup
log "========== 脚本结束 =========="

Day4 核心总结函数:封装重复代码,函数名(){}日志函数:统一输出格式linux是什么,方便排查tee -a:屏幕 + 文件同时记录set -e:出错自动退出linux系统错误日志,更安全
