【问题标题】:how to run cygwin script from java如何从java运行cygwin脚本
【发布时间】:2012-03-08 19:48:23
【问题描述】:

我正在尝试从我在 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" 字符串代表什么,但我只是接受了。起初看起来我可以插入我希望运行时/进程对象执行的顺序命令,本质上是创建一个“脚本”来运行我的脚本。但现在看来,还有更多……

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

【问题讨论】:

    标签: java bash process runtime


    【解决方案1】:

    未经测试,但我认为:

    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";
    

    【讨论】:

    • 然后运行 ​​Runtime rt= Runtime.getRuntime(); Process proc = rt.exec(cmmd); ?奇怪的是,我仍然没有得到任何结果。谢谢,这看起来确实更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    • 2017-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多