当 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
通过查看变量来调用并检查其状态$?