我正在尝试编写简单的shell脚本来解析属性文件并根据这些值计算另一个字符串。
dev.properties
com.global.jdbcUrl=${local_jdbcUrl}
<<p>环境变量/strong>export local_jdbcUrl="jdbc:mysql://localhost:3306/db_0?autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true"
bash文件:
#!/bin/bash
file="./dev.properties"
function prop {
grep "${1}" ${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. nn"
for val in "${strarr[@]}";
do
for refs in "${keysarr[@]}";
do
tmp="$val.$refs"
printf "name : $tmpnn"
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. nn
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