我正在尝试从我在 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/