คำตอบที่ได้รับการยอมรับใช้งานได้จริง (ขอบคุณ maxschlepzig) แต่ปล่อยให้การตรวจสอบ inotifywait ในพื้นหลังจนกว่าสคริปต์ของคุณออก เพียงตอบตรงกับที่ตรงความต้องการของคุณ (เช่นการรอคอยสำหรับ sleep.txt ที่จะแสดงขึ้นภายใน tmp /) น่าจะเป็นสเตฟานของถ้าไดเรกทอรีที่จะถูกตรวจสอบโดย inotifywait มีการเปลี่ยนแปลงจากจุด (.) เพื่อ '/ tmp'
อย่างไรก็ตามหากคุณยินดีที่จะใช้ไดเรกทอรีชั่วคราวเท่านั้นสำหรับการตั้งค่าสถานะ sleep.txt ของคุณและสามารถเดิมพันได้ว่าไม่มีใครอื่นจะวางไฟล์ใด ๆ ในไดเรกทอรีนั้นเพียงแค่ขอให้ inotifywait ดูไดเรกทอรีนี้เพื่อสร้างไฟล์จะเพียงพอ:
ขั้นตอนที่ 1: สร้างไดเรกทอรีที่คุณจะตรวจสอบ:
directoryToPutSleepFile=$(mktemp -d)
ขั้นตอนที่ 2: ตรวจสอบว่ามีไดเรกทอรีอยู่จริง
until [ -d $directoryToPutSleepFile ]; do sleep 0.1; done
ขั้นตอนที่ 3: รอจนกว่าไฟล์ใด ๆ จะปรากฏขึ้นภายใน $directoryToPutSleepFile
inotifywait -e create --format '%f' --quiet $directoryToPutSleepFile
ไฟล์ที่คุณจะใส่เข้าไป$directoryToPutSleepFile
นั้นมีชื่อว่า sleep.txt awake.txt ไม่ว่าอะไรก็ตาม ช่วงเวลาที่ไฟล์ใด ๆถูกสร้างขึ้นใน$directoryToPutSleepFile
สคริปต์ของคุณจะดำเนินการต่อผ่านinotifywait
คำสั่ง
$MAILPATH
ดูที่