diffを使用できず、cmpを使用できません。bashは2つのファイルの内容を比較し、結果に基づいて2つの異なる動作を行います
通信を使用することはできますが、スクリプトで条件付きで使用すると正しい結果が得られません。
#!/bin/bash
# http://stackoverflow.com/a/14500821/175063
comm -23 <(sort /home/folder/old.txt) <(sort /home/folder/new.txt)
if [ $? -eq 0 ];then
echo "There are no changes in the files"
else
echo "New files were found. Return code was $?"
fi
それは常に返します。ファイルCOMMコマンドとして
での変更はありません
、正常に実行されますが、ファイルの内容が異なっています。
企業のLINUXボックスであるため、このサーバーに追加できるものは非常に限られています。
! comm -3 <(sort /home/folder/old.txt) <(sort /home/folder/new.txt) | grep -q '.*'
comm
コマンドが、それは違いを見つけるかどうか成功(ステータス0で終了)しますが、それは、一致が見つかった場合grep
にのみ成功します。
ファイルが見つからないなど、失敗しても 'comm'は常に0を返します。 'comm'が出力されているかどうか確認するためにstdoutをチェックする必要があります。 – alvits
ファイルはどのように見えますか? '$? 'は最後のプロセスの終了ステータスであり、行数ではありません。 – dawg
'$? 'に同義語があります。また、 'comm -23'はnew.txtにないold.txtの行を返します。 old.txtにないnew.txtの行は無視されます。それはあなたが欲しいものですか? – John1024