2013-11-27 25 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