diff --git a/nginx/replace_vars.sh b/nginx/replace_vars.sh index 3b5a3dc..ddda249 100755 --- a/nginx/replace_vars.sh +++ b/nginx/replace_vars.sh @@ -41,11 +41,13 @@ for conf_file in vhosts/*.conf; do content=$(cat "$conf_file") # 获取所有环境变量(包括export和非export的) - env_vars=$(env | grep -E "^[A-Z_]+=" | cut -d= -f1) + # 使用set命令获取所有变量,然后过滤出大写字母开头的变量 + env_vars=$(set | grep -E "^[A-Z_]+=" | cut -d= -f1) # 逐个替换环境变量 for var_name in $env_vars; do - var_value="${!var_name}" + # 使用eval获取变量值,这样可以处理包含特殊字符的值 + eval "var_value=\$$var_name" if [ ! -z "$var_value" ]; then # 使用更安全的变量替换方法 pattern="\\\${$var_name}" diff --git a/nginxbazhong/replace_vars.sh b/nginxbazhong/replace_vars.sh index 29bca22..ddda249 100755 --- a/nginxbazhong/replace_vars.sh +++ b/nginxbazhong/replace_vars.sh @@ -40,13 +40,14 @@ for conf_file in vhosts/*.conf; do # 读取原始文件内容 content=$(cat "$conf_file") - # 获取environment.sh中所有环境变量 - env_vars=$(grep -E "^export [A-Z_]+" ../environment.sh | sed 's/export //') + # 获取所有环境变量(包括export和非export的) + # 使用set命令获取所有变量,然后过滤出大写字母开头的变量 + env_vars=$(set | grep -E "^[A-Z_]+=" | cut -d= -f1) # 逐个替换环境变量 - for var in $env_vars; do - var_name=$(echo $var | cut -d= -f1) - var_value=${!var_name} + for var_name in $env_vars; do + # 使用eval获取变量值,这样可以处理包含特殊字符的值 + eval "var_value=\$$var_name" if [ ! -z "$var_value" ]; then # 使用更安全的变量替换方法 pattern="\\\${$var_name}" diff --git a/nginxdashuju/replace_vars.sh b/nginxdashuju/replace_vars.sh index 29bca22..ddda249 100755 --- a/nginxdashuju/replace_vars.sh +++ b/nginxdashuju/replace_vars.sh @@ -40,13 +40,14 @@ for conf_file in vhosts/*.conf; do # 读取原始文件内容 content=$(cat "$conf_file") - # 获取environment.sh中所有环境变量 - env_vars=$(grep -E "^export [A-Z_]+" ../environment.sh | sed 's/export //') + # 获取所有环境变量(包括export和非export的) + # 使用set命令获取所有变量,然后过滤出大写字母开头的变量 + env_vars=$(set | grep -E "^[A-Z_]+=" | cut -d= -f1) # 逐个替换环境变量 - for var in $env_vars; do - var_name=$(echo $var | cut -d= -f1) - var_value=${!var_name} + for var_name in $env_vars; do + # 使用eval获取变量值,这样可以处理包含特殊字符的值 + eval "var_value=\$$var_name" if [ ! -z "$var_value" ]; then # 使用更安全的变量替换方法 pattern="\\\${$var_name}"