3

Java クラス内で実行したいシェル スクリプトがあります。シェル スクリプトは、入力ファイルを受け取り、そこから出力ファイルを生成します。

それを実行するには、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で終了しているようです。それが正常な場合は、execute呼び出しを行う前にこれを試してください。

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