我有一个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
中的终端上运行脚本时,脚本运行完美,没有任何错误是否与用户权限有关?我需要创建一个输出文件,如果是
,我可能没有权限答案 0 :(得分:3)
该脚本使用bash功能,最明显的是第44行中的数组。您必须使用/bin/bash
执行脚本,而不是/bin/sh
。
答案 1 :(得分:0)
似乎bash脚本正在退出,返回码为2.如果这是正常的,请在执行执行调用之前尝试此操作。
executor.setExitValue(2);