2017-10-17 8 views
1

file1file2という2つのファイルを仮定します。 file1は短いBashスクリプトであり、テキスト文字列を取得するためにfile2を参照しています。テキスト文字列に変数名($VAR1)が含まれていますが、変数自体にはfile1という値が割り当てられています。上記の設定の下で別ファイルからのbash変数名の参照

$ cat file1 
#!/bin/bash 
VAR1="World" 
CMDS=$(cat file2) 
echo "$CMDS" 

$ cat file2 
Hello $VAR1 ! 

、変数名はfile1の実行中に正しく認識されていません。

$ bash file1 
Hello $VAR1 ! 

私は、変数名がfile1の実行中に正しく認識されていることをそうするために何が必要ですか?

+2

なぜあなたはこれをやりたいのですか? – 123

+0

@ 123明らかに、彼はテンプレートシステムとして 'bash'を使いたいと思っています。 – chepner

+0

@chepner非常に奇妙な方法でテンプレートにアプローチします。 – 123

答えて

0

file2を実行していないので、そのコンテンツをcatしているので、file2の変数はプレースホルダとしてのみ機能します。

CMDS=$(cat file2|sed -e "s/\$VAR1/$VAR1/") 
+0

'sed'は' file2'の読み方を知っています。 ['cat'は役に立たない](http://www.iki.fi/era/unix/award.html)。 – tripleee

関連する問題