举个例子:我有工作 shell 脚本,它启动 weblogic(将继续运行),然后进行部署
最后,我将后台进程带回到前台,这样 shell 脚本就不会退出(以代码 0 退出)
#!/bin/bash
set -m
startWebLogic.sh &
# create resources in weblogic
# deploy war
# ...
jobs -l
fg %1
我必须使用set -m
, 来允许作业控制,但我也发现这不是在非交互式 shell 中使用它的最干净的方式。
有没有更好的方法来处理呢?
答案1
据我了解您正在寻找的问题wait
:
#!/bin/bash
startWebLogic.sh &
# create resources in weblogic
# deploy war
# ...
wait
它不会“将进程带到前台”。但它确实会等到 weblogic 返回。所以shell脚本直到weblogic退出后才会退出。这就是你用 实现的效果fg %1
。
从help wait
:
等待由 ID(可以是进程 ID 或作业规范)标识的每个进程,并报告其终止状态。如果未给出 ID,则等待所有当前活动的子进程,并且返回状态为零。