From 7db7ea17bafe9f54771974e90f0dcd0242417fae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?= Date: Wed, 11 Jun 2025 13:01:00 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nginx/replace_vars.sh | 6 ++++-- nginxbazhong/replace_vars.sh | 11 ++++++----- nginxdashuju/replace_vars.sh | 11 ++++++----- 3 files changed, 16 insertions(+), 12 deletions(-) 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}"