foo
たとえば、別の変数セットを使用してプロセスを実行したいとします。
FOO=1 foo
FOO=2 foo
FOO=1 BAR=7 foo
コマンドを繰り返し実行せずにfoo
これを行うにはどうすればよいですか?たとえば、次のように繰り返して環境を設定します。
for e in 'FOO=1' 'FOO=2' 'FOO=1 BAR=7'; do
env "$e" foo
done
$e
パラメータが表示されるため、に設定され、まったく設定されていないFOO=1 BAR=1
場合を除いて、これはほとんど機能します。つまり、引用符なしで使用できますが、変数値にスペースが含まれていると機能しません。FOO
1 BAR=1
BAR
env
env $e
e
ベストアンサー1
もう短くならないでしょう。実行するコマンドが非常に長いことが問題の場合は、次のヘルパー関数を作成できます。
r(){ env "$@" foo with lots of args ; }
r FOO=1
r FOO=2
r FOO=1 BAR=7
r FOO='1 BAR=7'
環境変数の名前や値に特定の文字が出ないことを知っている場合は、それを使って分割して使用したり、値を正確に引用して試してみることもできますeval
。
問題はなぜこのようなことをするのかということです。