【发布时间】:2022-11-04 19:32:42
【问题描述】:
我有一个 shell 脚本,它试图在 for 循环中启动两个 docker 容器。在检测到标准输出中的输出“服务将在端口上运行”之前,该脚本不应继续执行其余部分。
以下代码在 linux 上运行良好:
for i in "${functionsToStart[@]}"
do
echo "Starting ${i}"
(bash start-server.sh) | grep -q "Service will run on port"
done
#more commands
.
.
.
然而,在 MacOs 中,这将在虚拟环境(docker 桌面)中启动 docker,并且 grep 永远不会匹配。
当我尝试将其作为子进程运行时:
(bash start-server.sh &) | grep -q "Service will run on port"
grep 匹配得很好,但它也杀死了我的子进程,因此也杀死了容器。
我需要容器在脚本执行的其余部分继续运行,我如何在 MacOs 中执行此操作?
【问题讨论】: