私は次のような状況にあります。
source local.env
run_my_app
には、次のように具体的local.env
に関連する環境変数がたくさんありますrun_my_app
。
es_protocol="http"
es_host=0.0.0.0
es_port=9200
mongo_protocol=mongodb+srv
mongo_host=foo.cluster.mongodb.net
mongo_port=80
mongo_user=foo
rabbit_protocol=ampq
rabbit_host=foo.rabbitmq.svc.cluster.local
rabbit_port=5672
rabbit_user=rabbitmq
ファイル内のすべての変数に重複して騒々しいプレフィックスを追加する代わりに、次のようにmy_app
シェルプログラムを使用してプレフィックスを追加したいと思います。
source <(add_var_prefix 'my_app' local.env) ## *note below
add_var_prefix
次の2つのことを行うBash関数を実装する方法を知っている人はいますか?
local.env
ファイル内のすべての変数にプレフィックスを追加する- 変数をインポートする代わりに変数をエクスポートする
source <(xyz)
何らかの奇妙な理由で、ソースコードがプロセスの交換で動作しないため、これは機能しません。
ベストアンサー1
以下は簡単な解決策ですsed
。
source <(sed 's/[^=]\+=/export my_app_&/' local.env)
私は、等号を含むすべての行が変数の割り当てであると仮定し、複数行の変数や同じ行の複数の割り当てなどの素晴らしい形式を考慮していないので、これを「素朴」と呼びます。