我写了这个 shell 脚本片段:
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