変数をchpstによってロードされた環境変数の値に置き換えます。

変数をchpstによってロードされた環境変数の値に置き換えます。

chpst次の環境変数をロードするために使用する場合:

env BAR=baz chpst -e envdir mycommand

コンテンツを含むenvdirファイルがあります。envdir/FOO

foo$BAR

mycommand代わりにis値を取得する方法はありますか?FOOfoobazfoo$BAR

FOO明らかに、上記のアプローチは機能しません。設定をそのままにしてくださいfoo$BAR。ロードされた環境変数の値を置き換えるためにできることがあるかどうか疑問に思います。


完全なコンテキスト:ほとんどの場合、環境変数は環境を選択すると静的ですが、場合によってはホストごとに異なる必要があります。だから実生活では、実行環境に適切なホスト名を設定してHOSTからAPI_URL=http://$HOST:8080/chpstケース。

答え1

たぶんこんなことはありませんか? (envdirの内容を信頼できると仮定)

このファイルをenvdir / runに入れてください:

#!/bin/bash

for v in `dirname $0`/* ; do
    if [[ "`basename $v`" = run ]]; then
        continue;
    fi
    eval "export `basename $v`=`cat $v`"
done

exec "$@"

それから:

./envdir/run some command

関連情報