2011-11-15 4 views
2

전에 & 명령을 사용하여 스크립트를 백그라운드에서 다른 스크립트를 실행하도록 만들었습니다.백그라운드에서 명령을 실행하는 경우 BASH SHELL

#!/bin/bash 
echo "Hello World"  
script1.sh & 
script2.sh & 
echo "Please wait..." 

그러나 IF ELSE 문을 가진 다른 스크립트가 있고 ELIF 문을 중간으로 설정하고 싶습니다. 흐름을 배경 작업으로 &로 처리 한 다음 나머지 스크립트를 처리하면서 ELIF의 나머지 부분이 백그라운드에서 실행되도록합니다.

#!/bin/bash 
if cond1; then 
    stuff 
    sleep 10 & 
    stuff 
    stuff 
elif cond2; then 
    something else 
else 
    echo "foo" 
fi 
stuff 
echo "Hello World" 

정말 도움이 되길 바랍니다. 대단히 감사하겠습니다.

답변

5

subshell에서 명령을 실행할 수 있습니다. 서브 쉘은 별도의 (하위) 프로세스에서 실행됩니다. 서브 쉘에서 실행되는 명령은 괄호로 묶어서 정의 할 수 있습니다.

아시다시피 백그라운드에서 프로세스를 실행하려면 &을 추가하십시오. `(당신이 실행하고자하는 몸을 감싸는`:

#!/bin/bash 
(if cond1; then 
    stuff 
    sleep 10 & 
    stuff 
    stuff 
elif cond2; then 
    something else 
else 
    echo "foo" 
fi 
stuff 
echo "Hello World") & 
+2

기본 요약 : 여기


if 문은 별도의 백그라운드 프로세스에서 실행한다면 같을 것이다 것입니다 및') &'. –

+2

'{list; } & '명령을 그룹화 할 수도 있습니다. 목록은 '&'의 결과로 서브 쉘에서 실행됩니다. –

관련 문제