2012-07-09 2 views
0

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

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

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

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

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

[email protected]:~$ inotifywait -m -e create -q -r /media/data2/Music/English --format '%f %w' 
hello /media/data2/Music/English/ 

ответ

1

Проблема заключается в том f=$(inotifywait... ожидает, что команды до конца и только затем дает выход.

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

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

Ok, чем то, что должно быть моим правильным подходом. – RanRag

+0

спасибо, работал как шарм. – RanRag

+0

Также вы можете указать мне, чтобы исправить документацию, в которой говорится, что '$()' ждет завершения этой команды и только затем выдает результат. – RanRag

Смежные вопросы