如何在不关闭运行它的ssh / telnet会话的情况下退出shell脚本

时间:2014-01-03 21:55:32

标签: shell unix error-handling solaris ksh

我正在尝试使用KornShell(ksh)脚本编译文件夹中的所有Java文件。

此脚本由Apache Ant调用,因此我需要返回错误代码,以便知道何时失败。

function check_if_error
{
    if [ $1 != 0 ]
    then 
        echo "Unable to compile java module"
        echo "Error code $1"
        echo "Reason: $2 module"
        java_fail=1
        exit 1
    fi
}


echo "Compiling the java files..."
javac com/cmsi/eValuate/ScriptProcessor/*.java
check_if_error $? "ScriptProcessor"

我在其中一个Java文件中强制出现编译错误,因此当它遇到函数的exit 1部分时,它会杀死我登录到框中并运行此脚本的telnet会话。 / p>

我尝试了return,但是return没有杀死shell脚本,它只是一直在运行。

我尝试了kill -1 $$,但这也关闭了终端会话。

我正在使用Solaris 5 OS。

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

echo compiling...
if ! javac com/cmsi/eValuate/ScriptProcessor/*.java
then
    echo "compilation errors"
    return 1
fi

我不熟悉ant,但听起来它正在执行(获取)当前shell中的代码而不是生成可以成功退出的子shell。