명령 전 임시 할당이 작동하지 않나요? [복사]

명령 전 임시 할당이 작동하지 않나요? [복사]

나는 a초기 임무 이후 변화를 가져올 것으로 예상했습니다. 하지만 나는 아무것도 얻지 못했습니다.

tomas@tomas-Latitude-E4200:~$ echo $a

tomas@tomas-Latitude-E4200:~$ a=0 echo $a

tomas@tomas-Latitude-E4200:~$

a이전에 설정할 때 비슷한 예상치 못한 동작이 발생했습니다.

tomas@tomas-Latitude-E4200:~$ a=0
tomas@tomas-Latitude-E4200:~$ a=1 echo $a
0

훌륭한?

답변1

임시 환경 변수 할당이 적용됩니다.기간이전이 아닌 명령 실행. 특히 명령줄 구문 분석 중에는 아직 효과적이지 않습니다. 설명을 위해 다음 두 명령을 고려하십시오.

$ A=1 sh -c "echo $A"

$ A=1 sh -c 'echo $A'
1

예제 명령 간의 차이점은 첫 번째 명령에서 변수 대체가 발생한다는 것입니다.앞으로 sh -c, 그리고 그런 일이 일어났습니다기간실행 sh -c.

기술적으로 쉘은 임시 변수 할당을 하위 프로세스의 환경에 추가합니다. 이는 쉘 환경에 추가되지 않습니다.

관련 정보