2011-11-15 62 views
2

我已經使用了&命令之前有一個讓腳本運行另一個腳本在後臺像這樣:BASH shell,如果在後臺ELSE運行命令

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

但可以說我有另一個腳本與IF ELSE statment我想設置一個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中運行您的命令。子shell將在單獨的(子)進程中執行。您可以通過用括號括起來定義哪些命令在子shell中運行。

而且,如您所知,在後臺運行進程只需追加&即可。


這是你的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; }&'也可以將這些命令分組。該列表將作爲'&'的結果在子外殼中運行。 –