Bash 等待docker通过shell脚本在Mac OS中启动?
我正在编写一个shell脚本,其中通过终端在Mac上安装docker。我可以通过Bash 等待docker通过shell脚本在Mac OS中启动?,bash,macos,shell,docker,Bash,Macos,Shell,Docker,我正在编写一个shell脚本,其中通过终端在Mac上安装docker。我可以通过brew cask install docker进行安装。现在是基于GUI的docker等待用户事件继续。现在在我的shell脚本中,我希望在docker启动并运行之前保持执行。我发现了一个很好的脚本,可以检查docker是否正在运行。我可以检查它虽然如下 #!/bin/bash rep=$(curl -s --unix-socket /var/run/docker.sock http://ping > /d
brew cask install docker
进行安装。现在是基于GUI的docker等待用户事件继续。现在在我的shell脚本中,我希望在docker启动并运行之前保持执行。我发现了一个很好的脚本,可以检查docker是否正在运行。我可以检查它虽然如下
#!/bin/bash
rep=$(curl -s --unix-socket /var/run/docker.sock http://ping > /dev/null)
status=$?
if [ "$status" == "7" ]; then
echo 'not connected'
exit 1
fi
echo 'connected'
exit 0
我尝试将它放入一个循环中,以便在状态为0之前,它应该反复检查并保留异常。我在shell脚本编写方面没有经验,但尝试了一种运行方式,但失败了。我怎样才能做到这一点
我的剧本
#!/bin/bash
status=0
test() {
rep=$(curl -s --unix-socket /var/run/docker.sock http://ping > /dev/null)
status=$?
}
checkDocker() {
while [ "$status" == "7" ]
do
echo waiting docker to start
test
done
}
这是我在试着让你的剧本开始工作时想到的剧本。检查curl
的退出是很棘手的,因为Docker启动时,它会响应错误,但由于响应发生,curl
认为它正常,$status
设置为7
以外的值
#/bin/bash
而(!docker stats--无流);做
#Docker需要几秒钟来初始化
echo“等待Docker启动…”
睡眠10
完成
docker start$容器
然而,要考虑的是,这最终会有输出,所以你可能希望处理这个问题。 < P>这就是我所使用的。这是对杰弗里姆斯答案的修改。相反,打印错误消息并在重试之间等待10秒,这只是打印一条带有省略号的漂亮消息,省略号每秒增长一个点,直到Docker准备就绪
#!/bin/bash
printf "Starting Docker for Mac";
open -a Docker;
while [[ -z "$(! docker stats --no-stream 2> /dev/null)" ]];
do printf ".";
sleep 1
done
echo "";
哦!很好的改进