私は次のようなシェルスクリプトを作成しました。
while inotifywait -e modify $ENV_LOCATION/*.env
do
md5sum $ENV_LOCATION/*.env > ./checksums_optwo.md5
if [ -n "$(cmp ./checksums_opone.md5 ./checksums_optwo.md5)" ]
then
gdialog --msgbox "The files are different"
md5sum $ENV_LOCATION/*.env > ./checksums_opone.md5
else
gdialog --msgbox "The files match"
fi
done
gdialog
しかし、なぜプロンプトがないのかわかりません。どんなアイデアがありますか?
答え1
gdialog
ステートメントの両方の分岐があるため、終了状態がゼロの状態で終了する限り、どちらか一方が実行されますif
。inotifywait
監視中のファイルのいずれかが削除された場合(そして削除イベントを監視しない場合)、コマンドはinotifywait
ゼロ以外の終了状態で終了します。
ファイルの削除と変更を監視するには、次のようにします。
inotifywait -e modify -e delete_self "$ENV_LOCATION"/*.env
両方のファイルを比較し、cmp
結果に反応します。
if cmp -s file1 file2; then
echo 'files are the same'
else
echo 'files are different'
fi