1. ホーム
  2. bash

[解決済み] キーと値のペアのファイルから環境変数を設定する

2022-03-20 21:02:30

質問

TL;DR。 テキストファイルからシェル環境にキーと値のペアのセットをエクスポートするにはどうすればよいですか?


ちなみに、以下は質問のオリジナル版で、例もあります。

bashで、あるフォルダにある3つの変数を持つファイルを解析するスクリプトを書いているのですが、これはそのうちの1つです。

MINIENTREGA_FECHALIMITE="2011-03-31"
MINIENTREGA_FICHEROS="informe.txt programa.c"
MINIENTREGA_DESTINO="./destino/entrega-prac1"

このファイルは ./conf/prac1

私のスクリプト minientrega.sh で、このコードでファイルをパースします。

cat ./conf/$1 | while read line; do
    export $line
done

しかし、私が実行すると minientrega.sh prac1 コマンドラインでは環境変数が設定されません。

また source ./conf/$1 しかし、同じ問題がまだ適用されます

多分、他の方法があるのでしょう。私は、スクリプトの引数として渡すファイルの環境変数を使用する必要があります。

どのように解決するのですか?

あなたのアプローチの問題点は export の中に while のループはサブシェルで起こっており、これらの変数は現在のシェル(whileループの親シェル)では利用できません。

追加 export コマンドをファイル自体に記述します。

export MINIENTREGA_FECHALIMITE="2011-03-31"
export MINIENTREGA_FICHEROS="informe.txt programa.c"
export MINIENTREGA_DESTINO="./destino/entrega-prac1"

そして、現在のシェルで、そのファイルをソースとして使用する必要があります。

. ./conf/prac1

または

source ./conf/prac1