ダッシュスクリプトに設定されたいくつかの環境変数をファイルにエクスポートしたいと思います。
myvariable="line 1
LINE=3
some characters: # \" \$
line 5"
myvariable2="abc"
export myvariable myvariable2
期待される結果(利用可能なスクリプト):
declare -x myvariable="line 1
LINE=3
some characters: # \" \$
line 5"
declare -x myvariable2="abc"
結果はexport
このコマンドを使用して得られます。ただし、すべての環境変数をエクスポートし、フィルタリングを許可するわけではありません。変数の複数行文字のため、結果を計算できませんgrep
。
これに対して、このprintenv
コマンドは選択した変数のみを出力できますが、エスケープは考慮されず、このユースケースでは変数名は出力されません。
ベストアンサー1
またはzsh
。yash
export -p myvariable myvariable2
期待どおりに動作します。
それ以外の場合でも、bash
次のことができます。
for var in myvariable myvariable2; do
printf 'export %s=%q\n' "$var" "${!var}"
done
POSIXlyでは、以下を使用して手動で参照できますawk
。
awk -v q="'" '
function escape(v) {
gsub(q, q "\\" q q, v)
return q v q
}
BEGIN {
for (i = 1; i < ARGC; i++)
print "export " ARGV[i] "=" escape(ENVIRON[ARGV[i]])
}' myvariable myvariable2
bash
楽しみのためにいくつかのシェル(、、、、、、not zsh
)で動作するハッキーソリューションです。mksh
ksh93
yash
dash
(PS4=; set -x; export "myvariable=$myvariable") 2>&1