2016-03-03 40 views
0

在KSH中,我想運行多個並行或依次在後臺運行的命令,具體取決於標誌。如何根據ksh中的標誌在後臺運行進程

所以,如果該標誌爲真會像這樣運行:

command1 & 
command2 & 
command3 & 

command4 & 
command5 & 
command6 & 
wait 
command7 

但是,如果該標誌是假的話,我需要運行命令1,命令2,依次命令3。但它不應該影響命令的運行:命令4,命令5和命令6作爲並行批處理本身。 因此,如果標誌是假的:

(command1; command2; command3;) & 
(command4; command5; command6;) & 
wait 
command7 

我可能能夠使用if-別人的來實現它,但有沒有這樣做的更好更正確的方法是什麼?

我使用在Solaris 10上ksh88

回答

2

沒有殼的具體標誌,將自動允許在後臺分批分組命令。以下是如何使用簡單case/esac構造完成:

case "$flag" in 
(true) 
    command1 & command2 & command3 & 
    command4 & command5 & command6 & 
    true 
    ;; 
(false) 
    { command1; command2; command3; } & 
    { command4; command5; command6; } & 
    true 
    ;; 
(*) 
    echo "Unexpected flag: [$flag]" 
    false 
    ;; 
esac && { 
    wait 
    command7 
} 
+0

是的,沒有找到任何其他方式。使用這個。謝謝! – dvai