서브쉘에서 실행한 후 변수가 사라지기를 원할 때 호출되는 기술은 무엇입니까?
$ (lookForMe=wee && find -type d -name "${lookForMe}_*")
$ echo $lookForMe
$
답변1
쉘 변수는 항상 현재 쉘에 속합니다. 서브쉘을 생성하면 이는 다른 쉘이므로 고유한 변수 세트를 갖습니다. 귀하의 경우에는 subshell 을 실행 중이므로 (......)
bash는 처음에 상위 쉘의 모든 변수 복사본을 가져오도록 하위 쉘을 준비하지만 이미 그런 경우입니다. 특히 변수의 변경 사항은 하위 쉘이 끝날 때 다시 복사되지 않으며 하위 쉘에서 생성된 변수도 상위 쉘로 다시 전달되지 않습니다.
이것은 아니다기술, 하지만 그게 다야세게 때리다언어는 이미 정의되어 있으므로 이름을 묻는 것은 의미가 없습니다.
전체 아이디어는 대부분의 프로그래밍 언어의 지역 변수 개념과 일부 유사하므로 이 속성의 활용을 "지역 변수 생성"이라고 명명하고 싶을 수도 있지만 다음 사실을 무시하므로 그렇게 하기를 꺼릴 것입니다. 적어도 호출 사이트에서는 (...)
상위 쉘의 변수가 하위 쉘의 변수를 초기화하는 데 사용됩니다.
답변2
"서브쉘에서 작업 실행" 외에는 특별한 이름이 없습니다. 이는 하위 셸의 환경에 대한 변경 사항이 상위 셸 환경에 반영되지 않음을 의미합니다.
서브셸 내에서 생성된 변수를 "서브셸 환경의 변수"라고 참조할 수 있습니다.