Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“;用于”;循环以获取bash脚本中服务的状态_Bash - Fatal编程技术网

“;用于”;循环以获取bash脚本中服务的状态

“;用于”;循环以获取bash脚本中服务的状态,bash,Bash,我有一个bash脚本,它将在其中启动服务并检查服务的状态。但是,当我启动服务时,应用程序将花费15秒时间将服务状态从“否”更改为“是”,并且我的bash脚本将状态返回为“否”,因为它会在我启动服务后立即检查状态。因此,我希望我的bash脚本有一个“for”循环,它应该每1秒检查一次状态,一旦状态为“Yes”就中断for循环,并在15秒后退出 app_start=`/usr/bin/AppStart.py` app_status=`/usr/bin/AppStatus.py | grep -oPm

我有一个bash脚本,它将在其中启动服务并检查服务的状态。但是,当我启动服务时,应用程序将花费15秒时间将服务状态从“否”更改为“是”,并且我的bash脚本将状态返回为“否”,因为它会在我启动服务后立即检查状态。因此,我希望我的bash脚本有一个“for”循环,它应该每1秒检查一次状态,一旦状态为“Yes”就中断for循环,并在15秒后退出

app_start=`/usr/bin/AppStart.py`
app_status=`/usr/bin/AppStatus.py | grep -oPm1 "(?<=<Status>)[^<]+"`
 if [[ $app_status = "Yes" ]] ; then
 echo "Yes"
 else
 echo "No"
 fi
app_start=`/usr/bin/AppStart.py`

app_status=`/usr/bin/AppStatus.py | grep-oPm1“(?让我给你一些伪代码来解决你的问题:

boolean bFinish = false
integer iSeconds = 0

while (NOT(bFinish) AND (iSeconds < 15)) {
  bFinish = check_if_app_status_is_Yes(...)
  iSeconds = iSeconds + 1
  sleep 1
}
boolean bFinish=false
整数等秒=0
而(非(b完成)和(等秒<15)){
bFinish=检查应用程序状态是否为是(…)
等秒=等秒+1
睡眠1
}

供您参考:
sleep
是正确的UNIX/Linux命令,用于在
秒内减少执行。

那么代码呢?问题出在哪里?学习一个关于bash和shell编程的好介绍,编写这样的循环将是很简单的。记住用-backticks`检查脚本。如果不鼓励使用
$(…)