在 bash 脚本中打印环境变量
Printing environment variable inside bash script
我正在尝试编写简单的 shell 脚本来解析 属性 文件并根据这些值计算另一个字符串。
dev.properties
com.global.jdbcUrl=${local_jdbcUrl}
环境变量
export local_jdbcUrl="jdbc:mysql://localhost:3306/db_0?autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true"
bash 文件:
#!/bin/bash
file="./dev.properties"
function prop {
grep "" ${file} | cut -d'=' -f2
}
text="global"
keys="jdbcUrl"
IFS=','
read -a strarr <<< "$text"
read -a keysarr <<< "$keys"
echo "There are ${#strarr[*]} words in the text.\n"
echo "There are ${#keysarr[*]} words in the text. \n\n"
for val in "${strarr[@]}";
do
for refs in "${keysarr[@]}";
do
tmp="$val.$refs"
printf "name : $tmp\n\n"
valu="$(prop $tmp)"
printf "value : $valu \n"
printenv local_jdbcUrl
done
done
此脚本的输出:
There are 1 words in the text.\n
There are 1 words in the text. \n\n
name : global.jdbcUrl
value : ${local_jdbcUrl}
jdbc:mysql://localhost:3306/db_0?autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true
我正在使用 shell 脚本进行 运行 迁移,因此要形成迁移字符串命令,我需要在字符串中包含实际的环境变量值。环境变量替换没有发生。不知道这里出了什么问题。有人可以帮助我是 bash 脚本的新手吗?我检查了 shell 脚本中的环境值,它工作正常,仅在 bash 脚本中我收到此错误。
也许envsubst
$ cat file
${HOME} is where the heart is
$ cat file | envsubst
/home/glennj is where the heart is
我正在尝试编写简单的 shell 脚本来解析 属性 文件并根据这些值计算另一个字符串。
dev.properties
com.global.jdbcUrl=${local_jdbcUrl}
环境变量
export local_jdbcUrl="jdbc:mysql://localhost:3306/db_0?autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true"
bash 文件:
#!/bin/bash
file="./dev.properties"
function prop {
grep "" ${file} | cut -d'=' -f2
}
text="global"
keys="jdbcUrl"
IFS=','
read -a strarr <<< "$text"
read -a keysarr <<< "$keys"
echo "There are ${#strarr[*]} words in the text.\n"
echo "There are ${#keysarr[*]} words in the text. \n\n"
for val in "${strarr[@]}";
do
for refs in "${keysarr[@]}";
do
tmp="$val.$refs"
printf "name : $tmp\n\n"
valu="$(prop $tmp)"
printf "value : $valu \n"
printenv local_jdbcUrl
done
done
此脚本的输出:
There are 1 words in the text.\n
There are 1 words in the text. \n\n
name : global.jdbcUrl
value : ${local_jdbcUrl}
jdbc:mysql://localhost:3306/db_0?autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true
我正在使用 shell 脚本进行 运行 迁移,因此要形成迁移字符串命令,我需要在字符串中包含实际的环境变量值。环境变量替换没有发生。不知道这里出了什么问题。有人可以帮助我是 bash 脚本的新手吗?我检查了 shell 脚本中的环境值,它工作正常,仅在 bash 脚本中我收到此错误。
也许envsubst
$ cat file
${HOME} is where the heart is
$ cat file | envsubst
/home/glennj is where the heart is