コマンドラインオプションで環境変数を指定できるようにして、ユーザーに構成レイヤーを提供しようとしています。この設定は、実際には引数を受け取り、次に自分のプログラム(program.sh
)を呼び出すラッパープログラム(run.sh
)用です。環境変数をスクリプト引数に変換する
引用符を維持している引数に問題があり、予期しない引数が渡されています。ここで
は実装例です:run.sh
exec `pwd`/program.sh ${CONFIG} "[email protected]"
program.sh
for var in "[email protected]"
do
echo "$var"
done
例の呼び出しは次のようになります。
$> CONFIG='--foo="bar baz quo" --foo2="bar2 baz2"' ./run.sh hello abc123
--foo="bar
baz
quo"
--foo2="bar2
baz2"
hello
abc123
は私が期待したような出力:私はqoutesでrun.shにラッピング$ {CONFIG}を試してみましたが、それはただ--foo="bar baz quo" --foo2="bar2 baz2"
の単一の引数を作る
--foo="bar baz quo"
--foo2="bar2 baz2"
hello
abc123
。 CONFIG
内の見積もりをエスケープすると、間違った結果になります。
「abc123」はどこから来たのですか? – cdarke
環境は、このような引数を渡す正しい方法ではありません。 – chepner
@cdarke 'abc123'は間違った行に置かれ、それを反映する質問が更新されました。 – Lull3rSkat3r