2013-11-27 26 views
0

目标注入变量值插入占位符配置

要通过文件与单个命令运行,并且与所述外壳脚本中定义的变量替代配置文件中的占位符的变量。

要求

  • 我不想源配置文件,因为我已经试过了,它不工作。
  • 一个命令来为任何占位符变量工作(即在本例中这两个用户名和密码)

当前尝试

deploy.sh

USERNAME="tom" 
PASSWORD="secret" 

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

测试.conf

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

问题

  • 目前,它改变了 “$ PLACEHOLDER_USERNAME” 到 “$ USERNAME”
  • 我希望它改变 “$ PLACEHOLDER_USERNAME” 到 “汤姆”

回答

0

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

嗨,谢谢你。我认为这是将deploy.sh写入test.conf,但我真正想要做的是用deploy.sh中的占位符变量的值覆盖test.conf。 – Jimmy

+0

这会将'test.conf'更改为stdout。你可以这样做:'awk -F'[=“]''FNR == NR {a [”\ $ PLACEHOLDER_“$ 1”= $ 3; next} {print $ 1“= \”“a [$ 3] “\”“}'deploy.sh test.conf> _tmp && mv _tmp test.conf'在'test.conf'中获取更改的值 – anubhava