다음 bash 주문에서는 정확히 무슨 일이 일어나고 있나요?
x=10 echo $x
내 생각에 bash의 명령은 또는 을 사용하여 연결될 수 있지만 &&
단순히 공백으로 구분할 수는 없다는 것입니다. 위의 내용은 첫 번째 명령이 할당인 경우에만 작동합니다. 예를 들어 실패했지만 잘 작동했습니다.||
;
ls ls
foo=zoo ls
위 스타일의 실제 예는 다음에서 찾을 수 있습니다.이 답변.
답변1
이는 변수 세트를 사용하여 명령을 호출하는 데 사용되는 특수 구문 구조입니다. 이는 변수의 범위가 해당 명령으로 제한됨을 의미합니다.
예를 들어 다음 명령은 다음과 같습니다.
x=10 sh -c 'echo $x'
다른 명령과 정확히 동일합니다.
( export x=10; sh -c 'echo $x' )
귀하가 제공한 예( )는 변수가 호출 전에 평가되기 x=10 echo $x
때문에 이 구성에 적합한 예가 아닙니다 .$x
echo
답변2
이 작업을 수행할 때:
var=value command
var=value
명령 환경에 문자열을 전달했습니다 . 이 환경은 명령을 실행할 때 사용됩니다.
~에서bash 환경문서:
간단한 명령이나 기능의 환경은 앞에 매개변수 할당을 추가하여 일시적으로 향상될 수 있습니다., 셸 매개변수에 설명된 대로. 이러한 지정문은 명령으로 표시되는 환경에만 영향을 미칩니다.
하지만 귀하의 경우에는 이 명령이 작동하지 않습니다. 왜냐하면:
- 대부분의 쉘에서
echo
이는 내장 함수이므로 실행되지 않습니다. $x
쉘로 확장되었습니다.
답변3
명령 자산 변수 x는 셸에서 설정하는 것이 아니라 실행 중인 특정 명령의 값입니다. 말하자면 지역 작업입니다.
이를 사용하여 명령의 기존 변수를 설정하거나 변경할 수 있습니다.
내가 사용한 다른 용도는 다음과 같습니다.
http_proxy=myproxy wget http://myurl
그러면 쉘의 기본 프록시 설정을 변경하지 않고 특정 URL에 대한 특정 프록시가 설정됩니다.
LANG=C sort file
특정 언어 설정에 따라 파일을 정렬하지만 해당 특정 실행에만 적용됩니다.