2016-01-13 56 views
0

我正在使用diff操作来检查一些文件,但是想知道是否可以同时使用它来触发事件(例如,echo-到终端等的一行),而无需“手动”检查存在的输出报告。在if语句中输出diff whist?

我曾考虑过使用报告创建作为触发器,但据我所知无论如何都会创建该文件,在没有差异的情况下它只是空的?

基本上,有可能让diff输出一个文件,而在if语句中,以保持我的bash配置文件和脚本本身尽可能的整洁?

(如果有帮助,这是问题的一个后续的精彩帮助我在这个问题收到:Notifications on next ssh login

例如这个效果如何?:

if [ diff filex filey > report.txt == true ] 
    # So the report.txt is created but the 'state' of 
    # the diff query is preserved and evaluated... 
    then echo "Files are different" 
    else 
     break 
fi 

希望是有道理的。

这是在Ubuntu bash FYI。

+0

我确实找到了这个链接,但它似乎没有考虑从差异输出创建文件,同时也使用它来评估语句,他们只是在做后者(但请纠正我,如果我有错吗?) –

+0

它足够接近,我认为它值得标记。不过,我也回答了。至少有一个答案与我下面的答案相同(尽管我指出重定向对退出状态没有影响,在这种情况下,这就是if语句使用的所有内容)。 – Vatine

+0

完美就是我所需要的!非常感激。 –

回答

1

是,diff出口为0的状态,如果没有差异列表(这是壳“真”),所以你可以做这样的:

if ! diff <file1> <file2> 
then 
    do the thing when there are diffs 
else 
    do the thing when all is same 
fi 

如果您重定向这应该甚至工作输出。