Die akzeptierte Antwort funktioniert wirklich (danke maxschlepzig), aber die inotifywait-Überwachung bleibt im Hintergrund, bis Ihr Skript beendet wird. Die einzige Antwort, die genau Ihren Anforderungen entspricht (dh darauf zu warten, dass sleep.txt in / tmp angezeigt wird), scheint die von Stephane zu sein, wenn das von inotifywait zu überwachende Verzeichnis von Punkt (.) In '/ tmp' geändert wird.
Wenn Sie jedoch bereit sind, ein temporäres Verzeichnis NUR zum Setzen Ihres sleep.txt-Flags zu verwenden und wetten können, dass niemand anderes eine Datei in dieses Verzeichnis legt, reicht es aus, inotifywait zu bitten, dieses Verzeichnis auf Dateierzeugungen zu überwachen:
1. Schritt: Erstellen Sie das zu überwachende Verzeichnis:
directoryToPutSleepFile=$(mktemp -d)
2. Schritt: Stellen Sie sicher, dass das Verzeichnis wirklich vorhanden ist
until [ -d $directoryToPutSleepFile ]; do sleep 0.1; done
3. Schritt: Warten Sie, bis JEDE Datei angezeigt wird $directoryToPutSleepFile
inotifywait -e create --format '%f' --quiet $directoryToPutSleepFile
Die Datei, die Sie $directoryToPutSleepFile
einfügen, kann den Namen sleep.txt awake.txt haben. In dem Moment, in dem eine Datei in $directoryToPutSleepFile
Ihrem Skript erstellt wird, wird die inotifywait
Anweisung fortgesetzt .
$MAILPATH
.