在 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