进程检查失败时退出 shell 脚本

进程检查失败时退出 shell 脚本

当 TESTEXCHANGE 进程未在主机上运行时,我需要退出 shell 脚本。我该如何处理:

我有一个脚本 processcheck,用于检查该进程是否正在运行。

我将其调用至 MainTest 脚本。如果 ProcessCheck 脚本失败,我想退出 MainTest 脚本。

cat Processcheck

while read proc; do
        if (( 0 == $(ps -ef | grep -v grep | grep -c /location) )); then
                echo "!!!!! $proc down on Master TU  !!!!!"
                RC=1
         else
           echo "!!!!!! $proc is still running on Master TU!!!!!"
        fi
#echo "Not checked"

done < /tmp/PROCESSLIST

cat MainTest

#!/bin/bash

cd /app/utp/bin

ssh Test@TestHost 'bash -s' < /ProcessCheck

如果 processcheck 失败,我想从这里退出,然后执行下一步

答案1

您可以使用退出状态来处理您的案例。退出状态是命令返回的数值,用于指示执行是否顺利。0如果成功,则返回默认值,否则返回介于两者之间的数字[1..255]。每个值都有一个意义

例如,您可以Processcheck像这样重写:

while read proc; do
        if (( 0 == $(ps -ef | grep -v grep | grep -c /location) )); then
                echo "!!!!! $proc down on Master TU  !!!!!"
                RC=1  #I'm not sure why you use this line
                EXIT_STATUS=1
         else
           echo "!!!!!! $proc is still running on Master TU!!!!!"
        fi
#echo "Not checked"

done < /tmp/PROCESSLIST
exit $EXIT_STATUS  #1 means there was an error, 0 means everything went fine

在您的中MainTest,您可以Processcheck通过查看变量来调用并检查其状态$?

相关内容