如何根据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
}
是的,没有找到任何其他方式。使用这个。谢谢! – dvai