bashスクリプトの外部から印刷されたファイルに変数を渡すには?

bashスクリプトの外部から印刷されたファイルに変数を渡すには?

以下を含む変数v="c d e f g"とファイルがあるとしましょう。

line1
$v
line3

ここでこの記事で説明したように、2行目の変数の内容を使用してこのファイルを印刷するbashスクリプトを取得するにはどうすればよいですか?

#!/bin/bash

v="c d e f g"

cat << EOF
line1
$v
line3
EOF

出力:

line1
c d e f g
line3

答え1

envsubstファイルを解析し、環境変数(envsubst環境内にある)をその変数に置き換えるために使用されます。

$ v='c d e f g'
$ v=$v envsubst <file
line1
c d e f g
line3

または最初にエクスポートしてくださいv

$ export v
$ envsubst <file
line1
c d e f g
line3

私のシステムでは、envsubstパッケージの一部として配布されますgettext

関連情報