다른 환경에서 명령을 반복하십시오.

다른 환경에서 명령을 반복하십시오.

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.

문제는 왜 이런 일을 하겠느냐는 것입니다.

관련 정보