【问题标题】:Inject variable values into placeholder configuration将变量值注入占位符配置
【发布时间】:2013-12-12 21:01:14
【问题描述】:

目标

使用单个命令运行文件并将配置文件中的占位符变量替换为 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”

【问题讨论】:

    标签: linux bash shell ubuntu debian


    【解决方案1】:

    你可以使用这个 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"
    

    【讨论】:

    • 嗨,谢谢。我认为这是将 deploy.sh 写入 test.conf 但我真正想做的是用 deploy.sh 中的占位符变量的值覆盖 test.conf
    • 这会将更改的test.conf 打印为标准输出。然后您可以执行以下操作:awk -F '[="]' 'FNR==NR {a["\$PLACEHOLDER_" $1]=$3;next} $3 in a {print $1 "=\"" a[$3] "\""}' deploy.sh test.conf > _tmp && mv _tmp test.conf 以获取 test.conf 中的更改值
    猜你喜欢
    • 2017-09-23
    • 1970-01-01
    • 2020-12-14
    • 2012-02-19
    • 1970-01-01
    • 2019-07-22
    • 2018-07-04
    • 2021-03-01
    • 2020-10-28
    相关资源
    最近更新 更多