我想在后台有条件地运行程序,如果满足条件,我们将其作为守护进程运行,否则我们等待结果:
if [ -z "${CONDITION}" ]; then
echo "background" && npm install -g yarn &
else
echo "foreground" && npm install -g yarn
fi
是否有一种简便的方法来执行此操作?(我假设在else块中,给定语法,此过程不会在后台运行)。我想我们也可以有条件地添加"等待"而不是"&"字符。
答案 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