標準出力パイプで複数の環境変数を設定する方法

標準出力パイプで複数の環境変数を設定する方法

いくつかのenv出力を提供するパイプ付きシェルコマンドがたくさんあります。チェーンに追加のコマンドを追加できるように環境変数に設定したいと思います。

Kevins-MBP:ops kevzettler$ eb printenv | tail -n +2 | sed "s/ //g"
NODE_ENV=staging
RDSPassword=changme
RDSHost=sa1c7quehy7pes5.lolol.us-east-1.rds.amazonaws.com
RDSUsername=derp

答え1

次のことができます。

source <(eb printenv | tail -n +2 | sed 's/ //g; s/^/export /')
your_next_command_that_uses_those_env_vars

テスト:

  • サンプル変数定義を印刷する関数定義

    function eb {
    echo "
    NODE_ENV=staging
    RDSPassword=changme
    RDSHost=sa1c7quehy7pes5.lolol.us-east-1.rds.amazonaws.com
    RDSUsername=derp"
    }
    
  • パイプラインが何を生成するかを確認するには、それを呼び出します。

    $ eb printenv | tail -n +2 | sed 's/ //g; s/^/export /'
    export NODE_ENV=staging
    export RDSPassword=changme
    export RDSHost=sa1c7quehy7pes5.lolol.us-east-1.rds.amazonaws.com
    export RDSUsername=derp
    
  • その出力を取得し、現在のシェルと新しいシェルをテストしてエクスポートしたことを確認してください。

    $ source <(eb printenv | tail -n +2 | sed 's/ //g; s/^/export /')
    $ echo $NODE_ENV
    staging
    $ sh -c 'echo $NODE_ENV'
    staging
    

関連情報