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
петля.