2016-01-13 57 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 

如果您重定向這應該甚至工作輸出。