2010-06-24 2 views
1

쉘 스크립트를 시작하고 스크립트가 완료된 후 환경 변수를 가져 오는 python 스크립트를 작성해야합니다.완료된 프로세스의 환경 변수를 Python으로 어떻게 가져올 수 있습니까?

import os 
env={} 
os.spawnlpe(os.P_WAIT,'sh', 'sh', 'a.sh',env) 
print env 

얻을 :

{'MYVAR'="test"} 

파이썬에서
export MYVAR="test" 

내가 좋아하는 일을하고 싶습니다 : 당신이 쉘 스크립트 "a.sh"가 Immagine

그게 가능하니?

+0

감사합니다. David와 Noufal의 대답 모두 질문에 답했습니다! – riccardo

답변

5

아니요, 하위 프로세스의 환경 변수 변경 사항은 해당 하위 프로세스에 그대로 있습니다. (내가 아는 바로는) 하위 프로세스가 종료되면 해당 환경이 손실됩니다.

셸 스크립트를 사용하여 표준 출력 (또는 표준 오류, 또는 파일에 쓸 수 있음)에 환경 변수 또는 적어도 관심있는 변수를 출력하도록 제안하고이를 읽을 수 있습니다 파이썬에서 출력.

+1

아마도 이것이 최선의 방법 일 것입니다. 그러나, 필자가 추가하고자하는 한가지 제안은 값을 정의하는 쉘 스크립트를 수정할 수 없다면 명령을'bash -c '로 변경할 수 있다는 것입니다. ; env'' 기본적으로, 당신의 서브 셸은 환경을 소스로 만들어 스크립트가 직접하는 대신 스스로 출력합니다. – Rakis

0

나는 David의 게시물에 동의합니다.

Perl에는이 작업을 수행하는 모듈 Shell::Source이 있습니다. 서브 프로세스에서 원하는 스크립트를 실행하여 env을 추가하면 변수 값 쌍의 목록이 = 기호로 분리됩니다. 이것을 파싱하고 환경을 프로세스로 "가져올"수 있습니다. 이러한 종류의 행동이 필요한 경우 모듈을 살펴볼 가치가 있습니다.