構成とテンプレートという2つのファイルがあり、テンプレートの一部を構成の変数に置き換えたいと思います。
config.txt には以下が含まれます。
MYURL='www.google.com'
template.txt には以下が含まれます。
url = MYURL
使った
sed -e "s/MYURL/${replace}$MYURL/" template
ただし、config.txtの変数はそのファイルにのみ定義されます。私も試しました。
source config.txt
echo $MYURL
しかし、私が望む効果は出てこなかった。どうすればいいですか?
ベストアンサー1
後でgrepを使用する理由を説明するためのいくつかの説明は次のとおりです。
$ cat config.txt
/* blah blah yadda yadda */
/* look at me... I'm a text file, not a bash script... don't source me directly */
#MYURL='www.google.com'
MYURL='www.stackexchange.com'
$ cat template.txt
#url = example
url = MYURL
そしてスクリプト:
$ source <(grep -E "^[0-9A-Za-z]+=" config.txt)
$ echo $MYURL
www.stackexchange.com
$ sed -r -e "s/^url[ ]*=.*/url=${MYURL}/" template.txt
#url = example
url=www.stackexchange.com
(しかし、sedスクリプトの意図が何であるかわかりません...私のスクリプトはまったく異なるアプローチを持っており、空白があるかどうかにかかわらず、url = ...とurl = ...テンプレートをサポートしていますが、そうすることはできません。config。 txtにスペースがあります。そうしないと取得できません。
編集:ああ、あなたがしたいのは、キーの代わりにダミーの値に置き換えることです。必要に応じて、単に次のようにすることができます。
$ sed -r -e "s/MYURL/${MYURL}/" template.txt
#url = example
url = www.stackexchange.com