java - 如何从java运行cygwin脚本

标签 java bash process runtime

我正在尝试从我在 Windows 中编写的 Java 程序运行 bash 脚本。我一直在尝试使用 Runtime 对象来使进程正常工作,并且我的程序编译并运行时没有异常,但是我的简单测试脚本(仅创建一个目录)没有被执行。

这是我到目前为止所得到的:

String cmmd[] = new String[3];
    cmmd[0] = "C:\\cygwin\\bin\\bash.exe";
    cmmd[1] = "cd C:/Users/pro-services/Desktop/projects/github/cygwin";
    cmmd[2] = "bash TEST.sh";

    Runtime rt= Runtime.getRuntime();
    Process proc = rt.exec(cmmd);

这基本上是我在网络论坛中找到的不同内容的混合,但我想我只是不太了解 Process 类发生了什么(而且我对 Runtime 类只有一个基本的了解) )。

我也发现了这个,并将我自己的东西插入到我认为应该去的地方:

Runtime.getRuntime().exec(new String[]{"C:\\cygwin\\bin\\bash.exe",
                                                    "-c", "c:\\cygwin\\bin\\run.exe -p /bin bash C:\\Users\\pro-services\\Desktop\\projects\\github\\cygwin\\TEST.sh"},
                                      new String[]{"PATH=/cygdrive/c/cygwin/bin"});

这里我不确定 "-c""-p" 字符串代表什么,但我只是同意了。起初,我似乎可以插入我希望运行时/进程对象执行的顺序命令,本质上是创建一个“脚本”来运行我的脚本。但现在看来,还有更多的事情......

此时我只是在黑暗中拍摄,我试图理解文档,但我迷失了。任何帮助,将不胜感激。谢谢)))

最佳答案

未经测试,但我认为:

cmmd[0] = "C:/cygwin/bin/bash.exe";
cmmd[1] = "-c";
cmmd[2] = "cd /cygdrive/c/Users/pro-services/Desktop/projects/github/cygwin && bash TEST.sh";

关于java - 如何从java运行cygwin脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9623863/

相关文章:

Java从文件中读取数组

mysql - 从Shell界面将数据加载到mysql数据库中

linux - 将参数传递并解析到正在运行/在线的 systemd 守护进程

java - Lombok 项目 - 地理围栏类型的方法未定义

java - Mockito 验证没有_default_交互

java - 哪个模式在java : passing objects to a method or using composition?中耦合度较低

linux - 通过 If 语句判断数值是否超出范围

列数未知的csv文件的Bash处理

batch-file - 如何让.BAT文件完成后自行删除?

java - 无法使用 launch4j 重命名进程/图像名称