5

これに1時間苦労しています... Javaコード:

ULogger.info("throwing out 666!");
System.exit(666);

バッシュラッパー:

eval ${COMMAND_TO_RUN}
ret_code=$?
printf "error code : [%d]" ${ret_code}

出力:

[2012-11-30 15:20:12,971][INFO ] throwing out 666!
error code : [0]

ここでの取引は何ですか?ありがとう...

[編集]

${COMMAND_TO_RUN}は_

((java -Xmx9000m -Dtoday_nix=20121128 -cp "/usr/lib/hadoop/conf" com.paypal.risk.ars.linking.task_fw.BaseRunnableProcess 3>&1 1>&2 2>&3) | tee /dev/tty) > batches_errors.log
4

2 に答える 2

6

あなたの問題はあなたにありますCOMMAND_TO_RUN

((java -Xmx9000m -Dtoday_nix=20121128 -cp "/usr/lib/hadoop/conf" com.paypal.risk.ars.linking.task_fw.BaseRunnableProcess 3>&1 1>&2 2>&3) | tee /dev/tty) > batches_errors.log

最後に呼び出されたプログラムはteeであり、ステータス0で終了し、 の終了値をオーバーライドしますjava

$PIPESTATUSパイプ内の戻り値の配列である を使用できます。

例えば:

$ cat nonexistantFile | echo ; echo "e: $? p: ${PIPESTATUS[@]}"

期待される出力:

e: 0 p: 1 0

cat失敗します (終了コード 1)、echo は成功します (終了コード 0)。$?となります0。 ( ) の終了コードとecho ( )${PIPESTATUS[0]}の終了コードが含まれます。cat1${PIPESTATUS[1]}0

于 2012-12-01T01:19:57.790 に答える
-2

これは$?evalほぼ確実に、ここで成功しているのリターンコードを提供しています。なぜevalそこに電話を含めるのですか?ただ電話してCOMMAND_TO_RUN

于 2012-11-30T23:49:42.727 に答える