envsubst
を使用して環境変数の置換を実行しようとしていますが、特定の変数のみを置換したいと思います。
ドキュメントから、特定の変数のみを置き換えるようにenvsubst
に指示できるはずですが、そうすることができません。
たとえば、次のファイルがあるとします。
VAR_1=${VAR_1}
VAR_2=${VAR_2}
どのようにenvsubst
を実行すれば、${VAR_1}
への参照のみが置き換えられますか?
envsubst
を呼び出す前に、VAR_1
を変更するために、単一引用符を使用してエクスポートを使用する必要があります。のように:
export VAR_1='somevalue'
詳細については、以下を参照してください。
Manページごと:
envsubst [OPTION] [Shell-FORMAT]
Shell-FORMATが指定されている場合、Shell-FORMATで参照される環境変数のみが置き換えられます。それ以外の場合は、標準入力で発生するすべての環境変数参照が置き換えられます。
Shell-FORMAT文字列は"$variable
または${variable}
[...]の形式でシェル変数を参照する文字列です。変数名は英数字またはアンダースコアのみASCII文字、数字で開始せず、空でないこと。それ以外の場合、そのような変数参照は無視されます。 ".
したがって、それぞれの変数名をシェル形式の文字列でenvsubst
に渡す必要があります(明らかに、文字どおりenvsubst
に渡すには、エスケープ/引用符で囲む必要があります。 )。例:
入力ファイル、例: infile
:
VAR1=${VAR1}
VAR2=${VAR2}
VAR3=${VAR3}
といくつかの値
export VAR1="one" VAR2="two" VAR3="three"
それから走る
envsubst '${VAR1} ${VAR3}' <infile
または
envsubst '${VAR1},${VAR3}' <infile
または
envsubst '${VAR1}
${VAR3}' <infile
出力
VAR1=one
VAR2=${VAR2}
VAR3=three
または、バックスラッシュを使用する場合:
envsubst \$VAR1,\$VAR2 <infile
作り出す
VAR1=one
VAR2=two
VAR3=${VAR3}