2025-05-15 13:40:19 +08:00
|
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
|
|
|
|
# 加载环境变量
|
|
|
|
|
|
source ../environment.sh
|
|
|
|
|
|
|
|
|
|
|
|
echo "开始替换配置文件中的环境变量..."
|
|
|
|
|
|
|
|
|
|
|
|
# 检查vhosts目录是否存在
|
|
|
|
|
|
if [ ! -d "vhosts" ]; then
|
|
|
|
|
|
echo "错误: vhosts目录不存在!"
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
# 检查vhosts目录中是否有配置文件
|
2025-05-15 14:21:50 +08:00
|
|
|
|
if [ -z "$(ls -A vhosts/*.conf 2>/dev/null)" ]; then
|
|
|
|
|
|
echo "警告: vhosts目录中没有.conf文件,没有配置文件需要处理"
|
2025-05-16 15:14:22 +08:00
|
|
|
|
exit 0
|
2025-05-15 13:40:19 +08:00
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
# 创建临时目录
|
|
|
|
|
|
TEMP_DIR="temp_vhosts"
|
|
|
|
|
|
rm -rf $TEMP_DIR
|
|
|
|
|
|
mkdir -p $TEMP_DIR
|
|
|
|
|
|
|
2025-05-15 14:21:50 +08:00
|
|
|
|
# 处理所有.conf文件,替换环境变量,跳过cert目录
|
2025-05-15 13:40:19 +08:00
|
|
|
|
for conf_file in vhosts/*.conf; do
|
2025-05-15 14:21:50 +08:00
|
|
|
|
# 检查文件是否存在(处理无匹配文件的情况)
|
|
|
|
|
|
if [ ! -f "$conf_file" ]; then
|
|
|
|
|
|
continue
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
# 跳过cert目录中的文件
|
|
|
|
|
|
if [[ "$conf_file" == *"/cert/"* ]]; then
|
|
|
|
|
|
continue
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
2025-05-15 13:40:19 +08:00
|
|
|
|
filename=$(basename "$conf_file")
|
|
|
|
|
|
echo "处理文件: $filename"
|
|
|
|
|
|
|
2025-05-15 13:46:06 +08:00
|
|
|
|
# 读取原始文件内容
|
|
|
|
|
|
content=$(cat "$conf_file")
|
2025-05-15 13:40:19 +08:00
|
|
|
|
|
2025-06-11 12:52:16 +08:00
|
|
|
|
# 获取所有环境变量(包括export和非export的)
|
2025-06-11 13:01:00 +08:00
|
|
|
|
# 使用set命令获取所有变量,然后过滤出大写字母开头的变量
|
|
|
|
|
|
env_vars=$(set | grep -E "^[A-Z_]+=" | cut -d= -f1)
|
2025-05-15 13:40:19 +08:00
|
|
|
|
|
2025-05-15 13:46:06 +08:00
|
|
|
|
# 逐个替换环境变量
|
2025-06-11 12:52:16 +08:00
|
|
|
|
for var_name in $env_vars; do
|
2025-06-11 13:01:00 +08:00
|
|
|
|
# 使用eval获取变量值,这样可以处理包含特殊字符的值
|
|
|
|
|
|
eval "var_value=\$$var_name"
|
2025-05-15 13:46:06 +08:00
|
|
|
|
if [ ! -z "$var_value" ]; then
|
2025-05-16 15:14:22 +08:00
|
|
|
|
# 使用更安全的变量替换方法
|
2025-05-15 13:46:06 +08:00
|
|
|
|
pattern="\\\${$var_name}"
|
2025-05-26 09:42:53 +08:00
|
|
|
|
|
2025-05-16 15:14:22 +08:00
|
|
|
|
# 转义特殊字符
|
|
|
|
|
|
escaped_value=$(echo "$var_value" | sed 's/[\/&]/\\&/g')
|
2025-06-14 12:00:35 +08:00
|
|
|
|
# echo " 替换变量: ${pattern} -> $var_value"
|
2025-05-16 15:14:22 +08:00
|
|
|
|
content=$(echo "$content" | sed "s|${pattern}|${escaped_value}|g")
|
2025-05-15 13:46:06 +08:00
|
|
|
|
fi
|
2025-05-15 13:40:19 +08:00
|
|
|
|
done
|
|
|
|
|
|
|
2025-05-16 15:14:22 +08:00
|
|
|
|
# 写入处理后的内容到临时文件
|
2025-05-15 13:46:06 +08:00
|
|
|
|
echo "$content" > "$TEMP_DIR/$filename"
|
2025-05-15 13:40:19 +08:00
|
|
|
|
|
|
|
|
|
|
echo " 文件处理完成: $filename"
|
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
|
|
echo "环境变量替换完成! 替换后的文件位于 $TEMP_DIR/ 目录"
|
|
|
|
|
|
echo "请检查替换结果,确认无误后运行 build_image.sh 构建镜像"
|