題 bash腳本中的差異?


我一直在玩makefile和bash腳本,我對此很感興趣:

是否有可能從diff(或類似的東西)獲取布爾值,以便我可以在bash腳本中使用它來評估if語句(以便用戶不會看到實際的diff執行)?


4
2018-02-20 22:44


起源




答案:


如果您只需要逐字節比較,請使用 cmp

if cmp -s "$a" "$b"; then
    echo Same
else
    echo Differ
fi

這避免了浪費時間 diff差異發現算法。


10
2018-02-20 23:01





是:

如果diff“$ file_a”“$ file_b”&> / dev / null;然後
    echo“文件是一樣的”
其他
    echo“文件不同”
科幻

2
2018-02-20 22:53





手冊不清楚返回代碼。但是,當您比較兩個相同的文件時,diff應始終返回0。

diff -a $file1 $file2 > /dev/null 2>&1

if [ $? -eq 0 ]
then
    ...
fi

2
2018-02-20 22:51



“如果輸入相同則退出狀態為0,如果不同則退出,如果有麻煩則退出2。” (GNU diffutils 3.2) - 對我來說似乎相當清楚。 - grawity
diffutils 2.9.19-4065完全沒有“返回值”部分 - ziu
小心 !如果這種結構將失敗 set -e 是活動的,文件不同。更好用 if diff ...  施工。該 -e 當尚未處理或覆蓋所有錯誤情況且腳本有害時,標記(“立即退出時出錯”)非常方便。 - levif