【问题标题】:how to run shell script in java using Cygwin如何使用 Cygwin 在 Java 中运行 shell 脚本
【发布时间】:2012-02-13 09:06:13
【问题描述】:

长期以来,我一直在为这个程序而苦苦挣扎。我有一个 shell 脚本,它接受参数作为文件的版本号和路径。然后该脚本会创建带有版本号名称的 Zip 文件,将所有文件文件添加到文件夹中。

我已经在 D:/cygwin 路径上安装了 Cygwin。我将所需文件处理到安装 cygwin 的同一位置 D:\cygwin\bin

命令

D:/cygwin/bin/bash -c '/bin/test/app.sh 04.10 D:\cygwin\bin\Test_files

或者谁能建议如何使用 Cygwin 在 java 中运行 shell 脚本

重写问题:-

当我尝试在命令提示符下运行以下命令时,它会给出错误

sh app.sh AK-RD 02.20 D:\cygwin\bin\Test_files

错误:-C:\Documents and Settings\sh app.sh AK-RD 02.20 D:\cygwin\bin\Test_files

/usr/bin/app.sh: line 51: lib/lib.sh: No such file or directory

但是如果我在

处运行相同的命令

D:cygwin\bin\Test>sh app.sh AK-RD 02.20 D:\cygwin\bin\Test_files

它工作正常。任何人都可以建议我如何避免这种错误。

【问题讨论】:

    标签: java cygwin


    【解决方案1】:
    Runtime run = Runtime.getRuntime();
    Process p = run.exec("D:/cygwin/bin/bash -c \'/bin/test/app.sh 04.10 D:\cygwin\bin\ Test_files");
    p.waitFor();
    

    【讨论】:

    • 当心字符串文字中的 java excape 字符。我认为这更正确:D:/cygwin/bin/bash -c \\'/bin/test/app.sh 04.10 D:\\cygwin\\bin\\ Test_files
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    相关资源
    最近更新 更多