开发者

how to stop exiting from a script?

I have a script A which call a script G . Inside script G I cannot change any thing (don't have write access).

Inside Script G :

ExitProcess ()
{

  case $1 in
    "0" ) echo "$0: Finished successfully."
          exit 0
      ;;
*)  echo "$0: Unknown return status ($1)"
      exit $1
      ;;
 esac

}

Due to which I am exiting from Script A , how to stop this ?

Script 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
   开发者_JAVA技巧     fi
fi
}


genth_start()
{
echo START

. GD1_Sh 

}


genth_stop()
{
echo STOP

. G_Sh

##This is the Script G ###

}

while :
do
        check_status
done

Want this while loop to continue until I kill this script


If you can't change Script G, then it is probably easiest to arrange to run it as a separate process rather than using the . (dot) command to run it in the current process.

If Script G can only be used in the dotted mode, then you could write a third script, call it Script Z, which is designed to run Script G and exit, while your Script A continues happily (reporting the error from Z exiting, then doing whatever is appropriate).

If that is not feasible either, then you could use eval and $(...) carefully, so that when the functions from Script G that contain exit statements actually exit, they are running in a sub-shell and not in your main shell. This is fiddlier to do than running Script G separately, whether wrapped with Script Z or not, so I'd use one of those mechanisms first.


You can trap exit codes and call a specific function. In this case you wouldn't want to call exit at the end of the function in Script A.

You can also return an integer without using exit.

Example code from this comment.

function return_code_test ()
{
return 50
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜