あるファイルから別のファイルに変数を転送する

あるファイルから別のファイルに変数を転送する

構成とテンプレートという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

おすすめ記事