환경 변수 할당 후 명령 [중복]

환경 변수 할당 후 명령 [중복]

다음 bash 주문에서는 정확히 무슨 일이 일어나고 있나요?

x=10 echo $x

내 생각에 bash의 명령은 또는 을 사용하여 연결될 수 있지만 &&단순히 공백으로 구분할 수는 없다는 것입니다. 위의 내용은 첫 번째 명령이 할당인 경우에만 작동합니다. 예를 들어 실패했지만 잘 작동했습니다.||;ls lsfoo=zoo ls

위 스타일의 실제 예는 다음에서 찾을 수 있습니다.이 답변.

답변1

이는 변수 세트를 사용하여 명령을 호출하는 데 사용되는 특수 구문 구조입니다. 이는 변수의 범위가 해당 명령으로 제한됨을 의미합니다.

예를 들어 다음 명령은 다음과 같습니다.

x=10 sh -c 'echo $x'

다른 명령과 정확히 동일합니다.

( export x=10; sh -c 'echo $x' )

귀하가 제공한 예( )는 변수가 호출 전에 평가되기 x=10 echo $x때문에 이 구성에 적합한 예가 아닙니다 .$xecho

답변2

이 작업을 수행할 때:

var=value command

var=value명령 환경에 문자열을 전달했습니다 . 이 환경은 명령을 실행할 때 사용됩니다.

~에서bash 환경문서:

간단한 명령이나 기능의 환경은 앞에 매개변수 할당을 추가하여 일시적으로 향상될 수 있습니다., 셸 매개변수에 설명된 대로. 이러한 지정문은 명령으로 표시되는 환경에만 영향을 미칩니다.

하지만 귀하의 경우에는 이 명령이 작동하지 않습니다. 왜냐하면:

  • 대부분의 쉘에서 echo이는 내장 함수이므로 실행되지 않습니다.
  • $x쉘로 확장되었습니다.

답변3

명령 자산 변수 x는 셸에서 설정하는 것이 아니라 실행 중인 특정 명령의 값입니다. 말하자면 지역 작업입니다.

이를 사용하여 명령의 기존 변수를 설정하거나 변경할 수 있습니다.

내가 사용한 다른 용도는 다음과 같습니다.

http_proxy=myproxy wget http://myurl

그러면 쉘의 기본 프록시 설정을 변경하지 않고 특정 URL에 대한 특정 프록시가 설정됩니다.

LANG=C sort file

특정 언어 설정에 따라 파일을 정렬하지만 해당 특정 실행에만 적용됩니다.

관련 정보