Inotifywait не работает при использовании внутри скрипта bash

Я пытаюсь сделать скрипт bash с inotiy-tools это будет контролировать каталог.

Вот мой сценарий

while f=$(inotifywait -m -e create -q -r "/media/data2/Music/English"  --format '%f %w')
do
    echo "$f"
done

Проблема в том, что когда я запускаю вышеуказанный скрипт, он ничего не печатает на терминале. Я проверил inotifywait команда, и она отлично работает на терминале, но почему она не работает внутри моего скрипта.

inotifywait на терминале

noob@noob:~$ inotifywait -m -e create -q -r /media/data2/Music/English  --format '%f %w'
hello /media/data2/Music/English/

2 ответа

Решение

Проблема в f=$(inotifywait... ждет окончания этой команды и только потом выдает результат.

Я редко пишу bash, но вы можете попробовать:

inotifywait .... |
while read line
do
    echo $line
done

Не используйте -mпереключаться в этом контексте, иначе inotifywaitкоманда никогда не вернет управление whileпетля.

Другие вопросы по тегам