有条件地使用bash在后台运行进程

时间:2016-12-08 07:04:11

标签: bash sh

我想在后台有条件地运行程序,如果满足条件,我们将其作为守护进程运行,否则我们等待结果:

if [ -z "${CONDITION}" ]; then
    echo "background" && npm install -g yarn &
else
    echo "foreground" && npm install -g yarn
fi

是否有一种简便的方法来执行此操作?(我假设在else块中,给定语法,此过程不会在后台运行)。我想我们也可以有条件地添加"等待"而不是"&"字符。

1 个答案:

答案 0 :(得分:1)

我认为你的wait想法很好。我想不出更好的方法。

npm install -g yarn &
[ -n "$CONDITION" ] && { echo "waiting for install"; wait; }

不确定您是否需要echo内容,但如果耗时,您可能需要指示。

HTH

更新:显示其工作原理的简单脚本

C=""
date
sleep 5s &
[ -n "$C" ] && { echo "waiting"; wait; }
date

如果C="",您会得到如下输出:

Thu Dec  8 11:42:54 CET 2016
Thu Dec  8 11:42:54 CET 2016

(当然,sleep 5s在脚本完成时仍在运行)

如果您设置C="something",则会获得:

Thu Dec  8 11:42:42 CET 2016
waiting
Thu Dec  8 11:42:47 CET 2016