我有一个调用脚本G的脚本A.在内部脚本G我不能改变任何东西(没有写访问权限)。
内部脚本G:
ExitProcess ()
{
case $1 in
"0" ) echo "$0: Finished successfully."
exit 0
;;
*) echo "$0: Unknown return status ($1)"
exit $1
;;
esac
}
由于我将退出脚本A,如何阻止它?
脚本A:
check_status()
{
UserName="sbrk6"
MachineName="sn26"
Tstatus=`ssh -f -T ${UserName}@${MachineName} ps -ef | grep -w "Manager 1 PR" | egrep -v "grep|less|vi|more"`
Cstatus=`ssh -f -T ${UserName}@${MachineName} ps -ef | grep -w "gt1" | egrep -v "grep|less|vi|more"`
if [ "$Tstatus" ]
then
if [ "$Cstatus" ]
then
Gstatus=`ps -ef | grep -w "Gth_Hndl" | egrep -v "grep|less|vi|more"`
if [ -z "$Gstatus" ]
then
genth_start
fi
fi
else
if [ -z "$Tstatus" ]
then
if [ -z "$Cstatus" ]
then
Gstatus=`ps -ef | grep -w "Ghfdjdjd" | egrep -v "grep|less|vi|more"`
if [ "$Gstatus" ]
then
genth_stop
fi
fi
fi
fi
}
genth_start()
{
echo START
. GD1_Sh
}
genth_stop()
{
echo STOP
. G_Sh
##This is the Script G ###
}
while :
do
check_status
done
希望此 while 循环继续,直到我终止此脚本
答案 0 :(得分:2)
如果您无法更改脚本G,那么最简单的方法是安排将其作为单独的进程运行,而不是使用.
(点)命令在当前进程中运行它。
如果脚本G只能在虚线模式下使用,那么你可以编写第三个脚本,称之为脚本Z,用于运行脚本G并退出,同时脚本A继续开心(从Z报告错误)退出,然后做任何适当的事情。)
如果这也不可行,那么你可以仔细使用eval
和$(...)
,这样当包含exit语句的脚本G中的函数实际退出时,它们就会在子shell中运行而不是在你的主壳。这比单独运行脚本G更麻烦,无论是否包含脚本Z,所以我首先使用其中一种机制。
答案 1 :(得分:0)
您可以trap exit codes并调用特定功能。在这种情况下,您不希望在脚本A中的函数末尾调用exit。
您也可以在不使用退出的情况下return an integer。
的示例代码function return_code_test ()
{
return 50
}