从bash脚本获取返回代码和状态到Java文件

时间:2016-01-07 09:29:08

标签: java bash shell javafx

我在JavaFX场景构建器App中工作,在某些时候我的代码流执行如下:

从我的Java类中调用了一个bash脚本script1 来自MyClass.java

exec(./Script1)

在 script1另一个脚本script2,名为

called ./script2

script2另一个脚本script3,名为

在 script3

if [ ! "$upgrade_file_path" = "" ]; then
    echo "BUILD SUCCESS"
    echo "upgrade.cpio.gz : "$upgrade_file_path
    //LINE-1
else
    echo "FAILED TO CREATE upgrade.cpio.gz"
fi

我需要什么:

LINE-1:我可以从这里返回一些退出代码到我的java文件(MyClass.java),我需要显示 BUILD SUCESS 字符串以及$upgrade_file_path和退出我的javafx标签中的代码。 或者我可以将此退出代码,路径和状态保存在我的MyClass.java文件中的字符串中?

更新

我正在使用外部jar来连接SSH。我想要做的是从我的Windows机器上连接一台linux机器,为了达到这个目的,我使用了sshexec.jar https://code.google.com/p/sshxcute/downloads/list

下面的代码执行连接和执行bash脚本的工作

        ConnBean cb = new ConnBean(buildServerURL, buildServerUsername,buildServerPassword);
        // Put the ConnBean instance as parameter for SSHExec static method getInstance(ConnBean) to retrieve a singleton SSHExec instance
        ssh = SSHExec.getInstance(cb);          
        //Connect to server
        ssh.connect();
        CustomTask sampleTask = new ExecCommand("/usr/init/checkout.sh");
        //Execution of main taks
        Result rs = ssh.exec(sampleTask);

1 个答案:

答案 0 :(得分:2)

为了从java执行shell命令,我们需要使用一些库,在你使用SSHExec的情况下,在这个jar中你可以得到从shell脚本返回的结果/退出代码。

if [ ! "$upgrade_file_path" = "" ]; then
    echo "BUILD SUCCESS"
    echo "upgrade.cpio.gz : "$upgrade_file_path
    //Here you can just add something like:
    exit 0;
else
    echo "FAILED TO CREATE upgrade.cpio.gz"
    exit 1;
fi

当上面的脚本执行时,退出代码将从这里抛出,你可以在你的java应用程序中使用这样的退出代码:

    ConnBean cb = new ConnBean(buildServerURL, buildServerUsername,buildServerPassword);
    // Put the ConnBean instance as parameter for SSHExec static method getInstance(ConnBean) to retrieve a singleton SSHExec instance
    ssh = SSHExec.getInstance(cb);          
    //Connect to server
    ssh.connect();
    CustomTask sampleTask = new ExecCommand("/usr/init/checkout.sh");
    //Execution of main taks
    Result rs = ssh.exec(sampleTask);
    int exitCode = rs.rc; //rc stands for result code, and this rc will have what shell returned.rc is not a function but a int variable of Result class.
    if(exitCode!=0){
      //Error message
}else 
     //Success message.