如何根据ksh中的标志在后台运行进程

问题描述:

在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

没有壳的具体标志,将自动允许在后台分批分组命令。以下是如何使用简单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