2012-10-14 5 views
2

변수 작성이 BASH 스크립트에서 어떻게 다중 스레드 될 수 있습니까? 예를 들어, 스크립트에 아래의 두 줄이 포함되어 있으면 어떻게 동시에 실행할 수 있습니까?BASH의 다중 스레드 변수 생성

export BOTSUBSTITUTIONS=$(less --buffers=-1 ./conf/substitutions.xml) 
export BOTPROPERTIES=$(less --buffers=-1 ./conf/startup.xml) 

아래 예제는 작동하지 않습니다.

+1

정말 가능하지 않습니다. 적은 양의 작업을 배경으로하기 위해'&'안에'&'를 넣을 수 있지만, 부모 스크립트는 그걸 좋아하지 않고 단순히 건너 뛰거나 자식 프로세스가 제어권을 반환하기 전에 끝내기를 기다린다. 스크립트를 실행하고 리턴 값을 지정합니다. bash는 기본적으로 단일 스레드입니다. –

+0

감사합니다. @ 마크. 그것이 내가 생각한 것입니다. 그러나 나는 추측하고 싶지 않았습니다. –

+1

항상 임시 파일을 사용할 수 있습니다. –

답변

1

배경 프로세스의 출력을 파일 분리로 리디렉션하고 백그라운드 프로세스 완료를 기다린 다음 그 결과를 다시 변수로 cat합니다. 예 :

less --buffers=-1 ./conf/substitutions.xml >o1& o1=$! 
less --buffers=-1 ./conf/startup.xml >o2& o2=$! 
wait $o1 $o2 
export BOTSUBSTITUTIONS=$(cat o1) ; rm -f o1 
export BOTPROPERTIES=$(cat o2); rm -f o2