需求:应用自动部署后,需要加一个判断,确认应用是否启动成功,并返回成功或失败结果;成功则将对应结果传给其它自动化动作(比如:执行接口自动化测试)。
思路:匹配日志文件中应用服务启动成功后的某个字段,匹配到则返回成功的结果,规定时间内匹配不到,则判断启动失败。(服务进程判断方式不可取,服务刚启动时会存在进程;如果启动失败,进程会死掉)
实现如下:
#启动CWY服务 cd /opt/cwy8.31/product/module/A/CWY sh startup.sh #CWY服务启动判断 Logfile="/opt/cwy8.31/product/module/A/CWY/nohup.out" Starttag="maTaskScheduler" fun(){ i=0 while [ -f ${Logfile} ] do echo "正在通过日志确认是否启动" echo "检查CWY服务启动日志输出的成功标识:【$Starttag】" set +e result=`grep $Starttag ${Logfile}` started='started' failed='failed' set -e if [ "$result" != "" ] then echo "启动成功 ........." res=$started break else if [ "$i" -gt 600 ] then echo "超时,判定启动失败 ........." res=$failed break else echo "启动中 ......." sleep 1s i=$[$i+1] fi fi done } fun echo $res
脚本调试问题记录:
1. 在while循环中使用return报错:hh.sh: line 18: return: can only `return' from a function or sourced script
问题原因:shell脚本中的return常放在函数中执行(也可用在shell脚本函数体外,执行方式为: source xx.sh)
解决办法:将while循环封装到函数中,调用函数可解决此报错问题
2. return字串报错:hh.sh: line 18: return: failed: numeric argument required
问题原因:shell的function只能返回整数值
解决办法:该处可以将返回值赋值给一个变量,调用该function后,可以通过该变量获取到返回值
3. 判断启动成功后,返回成功结果;判断启动失败后,不返回失败结果
问题原因:判断成功后,使用break(跳出循环);判断失败后,大意使用了exit(结束脚本执行)
解决办法:将失败判断条件中的exit改为break
标签:脚本,CWY,判断,return,启动,成功,echo,自动,应用服务 From: https://www.cnblogs.com/silgen/p/16986170.html