0

ファイルを読んだ後にファイルが変更された場合は、スクリプトをチェックインする必要があります (別のアプリケーションがその間にファイルを変更する可能性があります)。bash のマニュアルによると、最後に読み取ってからファイルが変更されたかどうかを報告する "-N" テストがあります。小さなスクリプトで試してみましたが、うまくいかないようです。

#!/bin/bash
file="test.txt"
echo "test" > $file
cat $file;
if [ -N $file ];
    then echo "modified since read";
else
    echo "not modified since read";
fi

別のファイルに触れて使用する別の方法も試しました

if [ "file1" -nt "file2 ];

ただし、これは秒単位の精度でのみ機能し、まれな状況では不十分な場合があります。この問題に対する他の bash 組み込みのソリューションはありますか、それとも本当に diff または md5sum を使用する必要がありますか?

4

1 に答える 1

0

ファイル ハッシュ (md5/sha1) を比較することは、おそらくファイルの変更を知る (および監査する) ための唯一の確実な方法です。また、定期的なポーリングの代わりに (またはそれに加えて)、何らかのファイル変更通知を実装することもできます:提案については、この su questionを参照してください (例: inotifywaitを使用)。

しかし、スクリプトがリビジョン管理システムに徐々に収束しているように見える場合は、これらのファイルを git リポジトリに配置し、git に変更を検出させて管理させてください。

(編集:これらはログファイルを監視するスクリプトであることに気付きました(ファイルの変更について実際のスクリプトを監視していると思っていました)。その場合、それらをバージョン管理下に置くことは実際には適切ではありません。)

于 2012-06-11T04:34:50.453 に答える