1

を使用して、ファイルを3つの異なるゴールデンファイルと比較する必要がありますdiffexit 0テストファイルが3つのゴールデンファイルのいずれかと同じである場合は、スクリプトを終了する必要があります。

私は次のことを試しました:

#!/bin/sh
one=`diff -q NEW_GOLDEN_OUTPUT_ASYNC_1 /tmp/tmp_last_lines.log`
two=`diff -q NEW_GOLDEN_OUTPUT_ASYNC_2 /tmp/tmp_last_lines.log`
three=`diff -q NEW_GOLDEN_OUTPUT_ASYNC_3 /tmp/tmp_last_lines.log`

if [[ $one || $two || $three ]]; then
  exit 0
else
  exit 1
fi

しかし、それはexit 0すべての場合に戻ります。/ bin/kshシェルを使用しています。助言がありますか?

4

1 に答える 1

1

あなたのコードはの出力をdiff見ますが、終了コードを見る必要があります。代わりにこれを試してください:

#!/bin/sh
diff -q NEW_GOLDEN_OUTPUT_ASYNC_1 /tmp/tmp_last_lines.log && \
diff -q NEW_GOLDEN_OUTPUT_ASYNC_2 /tmp/tmp_last_lines.log && \
diff -q NEW_GOLDEN_OUTPUT_ASYNC_3 /tmp/tmp_last_lines.log

&&前のコマンドが成功した場合にのみ、次のコマンドを実行します。

または、set -e(コマンドがゼロ以外のステータスで終了した場合はすぐに終了します。) を使用します。

#!/bin/sh
set -e
diff -q NEW_GOLDEN_OUTPUT_ASYNC_1 /tmp/tmp_last_lines.log
diff -q NEW_GOLDEN_OUTPUT_ASYNC_2 /tmp/tmp_last_lines.log
diff -q NEW_GOLDEN_OUTPUT_ASYNC_3 /tmp/tmp_last_lines.log
于 2012-12-07T10:23:47.967 に答える