2012-12-07 152 views
1

我必須使用diff比較帶有3個不同黃金文件的文件。 如果測試文件與三個金文件中的任何一個相同,我需要退出腳本exit 0如何在shell腳本中檢查diff命令的輸出?

我試過如下:

#!/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 shell。有什麼建議麼?

+0

要檢查兩個文件是相同的使用 '如果CMP -s「$ SOURCE_FILE」「 $ dest_file「;那麼 :#個文件是相同的 否則 :#文件不同 fi' – Chipmunk

回答

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