linux - 将变量值注入(inject)占位符配置中

标签 linux bash shell ubuntu debian

目标

使用单个命令运行文件,并将配置文件中的占位符变量替换为 shell 脚本中定义的变量。

要求

  • 我不想获取配置文件,因为我已经尝试过但它不起作用。
  • 适用于任何占位符变量(即本例中的用户名和密码)的单个命令

当前尝试

deploy.sh

USERNAME="tom"
PASSWORD="secret"

sed 's/\$PLACEHOLDER_/\$/g' test.conf

test.conf

deploy="$PLACEHOLDER_USERNAME"
credentials="$PLACEHOLDER_PASSWORD"

问题

  • 目前,它将“$PLACEHOLDER_USERNAME”更改为“$USERNAME”
  • 我希望将“$PLACEHOLDER_USERNAME”更改为“tom”

最佳答案

您可以使用以下 awk 命令:

awk -F '[="]' 'FNR==NR {a["\$PLACEHOLDER_" $1]=$3;next} 
               $3 in a {print $1 "=\"" a[$3] "\""}' deploy.sh test.conf 
deploy="tom"
credentials="secret"

关于linux - 将变量值注入(inject)占位符配置中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20238758/

相关文章:

linux - 在不解压缩的情况下获取 rar/zip 文件中的文件名

linux - g++ 将 .a 文件及其依赖项链接到静态 .so

linux - echo 不在 bash 中打印变量

linux - 查找:-exec 缺少参数不复制

json - 使用jq将带有换行符的文本文件转换为json

linux - 设置包含文件内信息的变量

linux - 使用数据包对资源 `install` 执行操作 'newrelic_agent_infrastructure[Install]' 时出错

Bash 制表符完成在第一次完成后增加了额外的空间

linux - Shell 脚本,删除文件而不将整个名称作为参数

r - 从一台 Linux 服务器复制旧的 R 包并将它们安装在新服务器上