如何根据 ksh 中的标志 运行 后台进程
How to run a process in background depending on a flag in ksh
在 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。
没有 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
}
在 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。
没有 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
}