Bash脚本知道命令的结果

Bash脚本知道命令的结果,bash,diff,integration-testing,Bash,Diff,Integration Testing,我正在编写一个bash脚本来运行我正在编写的工具的集成测试 基本上,我使用一组输入运行应用程序,并使用diff命令行工具将结果与预期值进行比较 它正在工作,但我想通过了解diff命令的结果来增强它,并根据diff命令的结果打印“成功”或“失败” 我怎么做 变量$?保存最后执行的命令的结果 if diff file1 file2; then echo Success else echo Fail fi 如果两个文件相等,diff返回0,这是如果跟随然后的返回代码。如果file1和

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

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

它正在工作,但我想通过了解diff命令的结果来增强它,并根据diff命令的结果打印“成功”或“失败”


我怎么做

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

if diff file1 file2; then
    echo Success
else
    echo Fail
fi
如果两个文件相等,diff返回0,这是
如果
跟随
然后
的返回代码。如果file1和file2不同,diff将返回1,这将使If跳转到构造的
else
部分


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

此外,在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
if diff&1
然后
“他们是一样的。”
其他的
echo“他们是不同的。”
fi

谢谢,这对我很有用。我读到了大约美元?变量,但我不确定它是如何使用的。谢谢有人知道是否可以将一个目录中的所有文件与另一个目录中的文件区分开来吗?我试过diff dir1/*dir2/*但是没有用。LukeN:谢谢你的提示,我添加了一个解释。福克:我很高兴它对你有用。要区分目录,请使用-r(递归)开关:diff-rdir1 dir2