나는 다음과 같은 쉘 스크립트 조각을 작성했습니다.
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
명령문의 두 분기가 모두 있으므로 종료 상태가 0인 상태로 종료하는 한 둘 중 하나가 실행됩니다 if
. inotifywait
감시 중인 파일 중 하나라도 삭제된 경우(그리고 삭제 이벤트를 감시하지 않는 경우) 명령은 inotifywait
0이 아닌 종료 상태로 종료됩니다.
파일의 삭제 및 수정을 모니터링하려면 다음을 사용하십시오.
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