2014-04-11 2 views
0

WORKING_FILE이라는 내 보낸 변수에서 작동하는 많은 bash 스크립트가 있습니다.하위 변수에서 내 보낸 변수를 수정하는 방법

이 변수는 쉘에서 시작된 첫 번째 스크립트 인 main.sh 스크립트에서 내보내지며 실행 중 다른 스크립트 (예 : child.sh)를 호출합니다.

사실, child.sh는 WORKING_FILE을 main.sh 환경의 사본으로보고 WORKING_FILE을 변경하려고 시도하면 값은 실행이 끝날 때 손실됩니다.

질문 : child.sh가 WORKING_FILE 값을 수정하고 파일을 사용하지 않고 main.sh에서도 WORKING_FILE 값을 어떻게 바꿀 수 있습니까?

감사합니다. :)

+3

일반적으로 하위 환경에서는 부모 환경을 수정할 수 없습니다. 아마 자식 스크립트를'source '하고 싶을 것이다. – anishsane

+0

이 효과를 얻는 한 가지 방법은 $ WORKING_FILE의 값을 임시 파일에 저장하고 WORKING_FILE을 임시 파일의 경로로 설정 한 다음 필요할 때 임시 파일의 내용을 변경하는 것입니다. –

+0

또는 자식이 새 값을 알려진 FD로 출력하도록하고, 리디렉션을 통해 부모의 FD를 읽고 부모의 변수 복사본을 변경할 수 있습니다. – mpez0

답변

2

변수를 내 보낸 다음 하위를 실행하면 자식이 복사본 복사본을 가져오고 변경 내용이 부모에 표시되지 않습니다.

당신은, 그러나, 소스 스크립트는

. ./child.sh 

또는

source child.sh 

이 같은 인터프리터 아이 스크립트를 실행할 수 있으며, 환경에 대한 변경이 스크립트는 의지한다 스크립트에서 볼 수 있습니다.

관련 문제