他の環境でコマンドを繰り返します。

他の環境でコマンドを繰り返します。

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場合を除いて、これはほとんど機能します。つまり、引用符なしで使用できますが、変数値にスペースが含まれていると機能しません。FOO1 BAR=1BARenvenv $ee

ベストアンサー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

問題はなぜこのようなことをするのかということです。

おすすめ記事