stdoutから環境変数を設定する

stdoutから環境変数を設定する

stdout を 'export' にパイプするのと同等のことを行うにはどうすればよいでしょうか?

背景として、次のような環境変数を生成する非シェル スクリプトがあります。

DATABASE_URL='someurl'
MAIL_KEY='key'
REDIS_URL='redis connection string'

その出力を取得して、次のように実行したいと思います。 generate-env | xargs export

残念ながら、エクスポートはバイナリではなく、eval も同様です。出力をファイルに書き込んでソースで実行するのは避けたいのですが、これは可能なのでしょうか?

答え1

以下を使用できますeval:

$ set -a
$ eval "$(command_that_generate_output)"
$ set +a
$ sh -c 'printf "%s\n" "$DATABASE_URL"'
someurl

関連情報