在KSH中,我希望在后台运行多个并行或顺序运行的命令,具体取决于标志。
因此,如果FLAG为真,它将按以下方式运行:
command1 &
command2 &
command3 &
command4 &
command5 &
command6 &
wait
command7
但是如果标志为false,那么我需要按顺序运行command1,command2和command3。但它不应该影响命令的运行:command4,command5和command6作为并行批处理本身。 所以如果标志是假的:
(command1; command2; command3;) &
(command4; command5; command6;) &
wait
command7
我可以使用if-elses来实现它,但有更好的方法吗?
我在Solaris 10上使用ksh88。
答案 0 :(得分:2)
没有特定于shell的标志,允许在后台批处理中自动分组命令。以下是使用简单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
}