我有一个bash脚本,用于设置一堆配置文件并以块
结束set -xe
restart_app () {
sudo stop myapp
sleep 10
sudo start myapp
}
restart_app
for i in {1..10};
do
status=$(curl -Is localhost:3001 | head -1 | awk '{print $2}') # returns 200
if [ -z "$status" ];then
restart_myapp
else
:
fi
done
这使我可以转到status
并使用UI。但由于某种原因,应用程序有时dsnt start我想将它包装在一个排序循环中。这就是我所做的:
find
如果应用程序启动, begin
将返回200。如果不是,它什么也不返回。但是我的脚本dsnt完全退出并继续进行10次尝试。
答案 0 :(得分:2)
然而,我的脚本dsnt完全退出并继续进行10次尝试。
您需要在for
中摆脱else
循环:
for i in {1..10};
do
status=$(curl -Is localhost:3001 | awk 'NR==1{print $2; exit}')
if [[ -z "$status" ]];then
restart_myapp
else
break
fi
done
此处不需要head
,因为awk
可以为第一条记录设置条件NR==1
。