2011-11-15 14 views
2

でELSE runコマンドIF Iは、スクリプトがそうのようなバックグラウンドで別のスクリプトを実行させるために前に&コマンドを使用しています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でコマンドを実行できます。サブシェルは独立した(子プロセスで)実行されます。サブシェルで実行されるコマンドは、カッコで囲んで定義することができます。

ご存知のように、バックグラウンドでプロセスを実行する場合は、&を追加してください。ここで


あなたは別の、バックグラウンドプロセスでそれを実行した場合、あなたのifの文は次のようになります。

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

基本要約:あなたが実行したい体を包みます '('と ')&'。 –

+2

'{list; }& 'はコマンドをグループ化することもできます。リストは '&'の結果としてサブシェルで実行されます。 –