:引用符内のハッシュのような
SSH_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\nfoo\nbar\baz"
と特殊文字あなたはdash
を使用していますが、\n
のエスケープをサポートしたいと考えています。
eval "$(echo $(cat .env))" my-command-using-env-vars
dash
でecho
に内蔵され、バックスラッシュがサポートされていても-e
オプションを使用せずにエスケープしbash
に理由とは異なります:以下dash
での作品とは\n
エスケープをサポートしています。おそらく、両方のアプローチは、他のバックスラッシュをエスケープ(POSIXまたはGNUのどちらか)を処理することを
が
eval "$(env echo -e $(cat .env))" my-command-using-env-vars
注:ことを提供両方bash
とdash
で、次の作品は、非組み込みは、システムecho
は-e
オプションをサポートしていますあなたとは違ったやり方で
いくつかのテクニカルノート:
$(cat .env)
は、スペースにファイル.env
内の任意の改行を変換し、Field Splittingを実行します。
"$(env echo -e ...)"
はバックスラッシュはenv
介しecho -e
を呼び出すことに関係なく、現在のシェルのエスケープ拡張します。二重引用符はフィールド分割を無効にするので、改行は保持されます。
解決に感謝します!好奇心のため、ちょうど上記のケースで他のバックスラッシュエスケープをどのように処理するのですか? –
@BastianVenthur 'dash'と' bash'のマニュアルページを見て、組み込みコマンドを探します。 'env echo'については、' echo'マニュアルページを参照してください。 – nwellnhof