从Java代码中运行Shell脚本

14 浏览
0 Comments

从Java代码中运行Shell脚本

我有一个Java应用程序,它运行一个bash文件,在bash文件中我有一个代码来运行另一个Java应用程序,但似乎无法工作。我以C++为背景,这是一个非常简单的任务,但我在Java方面经验不足。

下面是我的代码:

import java.io.IOException;
import java.net.*;
import java.util.Scanner;
public class start {
    public void executeScript(){
        try{
            ProcessBuilder pb = new ProcessBuilder("/root/Desktop/chat/script.sh");
            Process p = pb.start();
            p.waitFor();
            System.out.println("脚本已执行..");
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        start st = new start();
        System.out.println("我是主函数..");
        st.executeScript();
    }
}

这是我的bash文件:

#!/bin/bash
echo "bash开始"
java Client ip_address
echo "bash结束"

这是代码的结果:

我是主函数.. 脚本已执行..

我知道"脚本已执行.."不应该打印出来,因为我试图从bash文件中运行的Java文件是一个无限循环。

注意:如果我单独在终端中运行bash文件,我会得到一个无限循环,这是预期的结果,这就是为什么我知道我的错误是来自这个文件的。

我希望我表达清楚了,如果没有,请提供更多信息。谢谢。

0