Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将返回代码和状态从bash脚本获取到Java文件中_Java_Bash_Shell_Javafx - Fatal编程技术网

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

将返回代码和状态从bash脚本获取到Java文件中,java,bash,shell,javafx,Java,Bash,Shell,Javafx,我在JavaFX scene builder应用程序中工作,我的代码流执行如下: 在我的Java类中,一个名为 从MyClass.java exec(./Script1) 在 script1调用另一个脚本script2 called ./script2 script2是另一个名为script3的脚本 在 脚本3 我需要的是: 第1行:我可以从这里将一些退出代码返回到我的java文件(MyClass.java)中吗?我需要显示BUILD suces字符串以及$upgrade\u file\u

我在JavaFX scene builder应用程序中工作,我的代码流执行如下:

在我的Java类中,一个名为 从
MyClass.java

exec(./Script1)
在 script1调用另一个脚本script2

called ./script2
script2是另一个名为script3的脚本

在 脚本3

我需要的是:

第1行:我可以从这里将一些退出代码返回到我的java文件(MyClass.java)中吗?我需要显示BUILD suces字符串以及
$upgrade\u file\u path
和我的javafx标签中的退出代码。 或者我可以将这个退出代码、路径和状态保存在我的
MyClass.java
文件中的字符串中

更新:

我正在使用一个外部jar来连接SSH。我试图做的是从我的windows机器连接linux机器,为了实现这一点,我使用了sshexec.jar

其中,下面的代码负责连接和执行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);

为了从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.

在页面中,您正在使用的项目有一些很好的例子:(3.5和3.6)。你看了吗?你试过使用那里显示的吗?是的!rc(如果执行最后一个命令,结果代码将打印0),我试图做的是在我编写的脚本中退出5;我希望结果代码中的值为5。这不是发生在这里的钢筋混凝土。
    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.