Bash脚本知道命令的结果

时间:2010-05-29 15:44:21

标签: bash diff integration-testing

我正在编写一个bash脚本来运行我正在编写的工具的集成测试。

基本上我使用一组输入运行应用程序,并使用diff命令行工具将结果与期望值进行比较。

它有效,但我想通过了解diff命令的结果并根据diff的结果打印“SUCCESS”或“FAIL”来增强它。

我该怎么办?

3 个答案:

答案 0 :(得分:6)

if diff file1 file2; then
    echo Success
else
    echo Fail
fi

如果两个文件都相等,则diff返回0,这是if跟随then的返回码。如果file1和file2不同,则diff返回1,这使得跳转到构造的else部分。

您可能希望通过编写diff file1 file2 >/dev/null而不是上述内容来抑制diff的输出。

答案 1 :(得分:5)

$?变量保存最后执行的命令的结果。

答案 2 :(得分:2)

此外,在Bash中,您可以直接使用进程替换diff命令的输出:

if diff <(some_command arg1) <(some_command arg1) > /dev/null 2>&1
then
    echo "They're the same."
else
    echo "They're different."
fi