#!/bin/bash # 加载环境变量 source ../environment.sh echo "开始替换配置文件中的环境变量..." # 检查vhosts目录是否存在 if [ ! -d "vhosts" ]; then echo "错误: vhosts目录不存在!" exit 1 fi # 检查vhosts目录中是否有配置文件 if [ -z "$(ls -A vhosts/*.conf 2>/dev/null)" ]; then echo "警告: vhosts目录中没有.conf文件,没有配置文件需要处理" fi # 创建临时目录 TEMP_DIR="temp_vhosts" rm -rf $TEMP_DIR mkdir -p $TEMP_DIR # 处理所有.conf文件,替换环境变量,跳过cert目录 for conf_file in vhosts/*.conf; do # 检查文件是否存在(处理无匹配文件的情况) if [ ! -f "$conf_file" ]; then continue fi # 跳过cert目录中的文件 if [[ "$conf_file" == *"/cert/"* ]]; then continue fi filename=$(basename "$conf_file") echo "处理文件: $filename" # 读取原始文件内容 content=$(cat "$conf_file") # 获取environment.sh中所有环境变量 env_vars=$(grep -E "^export [A-Z_]+" ../environment.sh | sed 's/export //') # 逐个替换环境变量 for var in $env_vars; do var_name=$(echo $var | cut -d= -f1) var_value=${!var_name} if [ ! -z "$var_value" ]; then # 使用简单的变量替换方法 pattern="\\\${$var_name}" echo " 替换变量: ${pattern} -> $var_value" content=$(echo "$content" | sed "s|${pattern}|$var_value|g") fi done # 写入处理后的内容到目标文件 echo "$content" > "$TEMP_DIR/$filename" echo " 文件处理完成: $filename" done echo "环境变量替换完成! 替换后的文件位于 $TEMP_DIR/ 目录" echo "请检查替换结果,确认无误后运行 build_image.sh 构建镜像"