使用java执行shell脚本时出现语法错误

时间:2012-09-10 15:05:03

标签: shell apache-commons processbuilder

我有一个shell脚本,我想在Java类中执行。 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

中的终端上运行脚本时,脚本运行完美,没有任何错误

是否与用户权限有关?我需要创建一个输出文件,如果是

,我可能没有权限

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

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

executor.setExitValue(2);