3

我有一个要在 Java 类中执行的 shell 脚本。shell 脚本接受一个输入文件并从中生成一个输出文件。

要执行它,我使用 apache commons exec。这是我的小代码:

CommandLine cmdLine = CommandLine.parse("/bin/sh ./generate_void_description.sh ./n3file ./voidfile");

int exitValue = executor.execute(cmdLine);

结果,我收到此错误消息:

./generate_void_description.sh: 44: ./generate_void_description.sh: Syntax error: "(" unexpected
org.apache.commons.exec.ExecuteException: Process exited with an error: 2 (Exit value: 2)

当然,我可以阅读并且我理解该消息意味着脚本中存在语法错误,但是。

1)我没有编写脚本,也不熟悉 bash 脚本语法 2)当我在 ubuntu 的终端上运行该脚本时,该脚本运行良好,没有任何错误

它与用户权限有关吗?我需要创建一个输出文件,如果如果我没有这样做的权限

4

2 回答 2

3

该脚本使用 bash 功能,最明显的是第 44 行中的一个数组。您必须使用/bin/bash,而不是/bin/sh.

于 2012-09-10T15:45:45.203 回答
0

似乎 bash 脚本正在退出,返回码为 2。如果这是正常的,请在执行执行调用之前尝试此操作。

executor.setExitValue(2); 
于 2012-09-10T15:11:48.773 回答