我必须使用diff
将文件与3个不同的黄金文件进行比较。
如果测试文件与三个黄金文件中的任何一个相同,我需要使用exit 0
退出脚本。
我尝试了以下内容:
#!/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 :(得分: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