나는 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
.
기술적으로 쉘은 임시 변수 할당을 하위 프로세스의 환경에 추가합니다. 이는 쉘 환경에 추가되지 않습니다.