Как получить имя файла из событий inotifywait?

Итак, я делаю простой цикл inotifywait, чтобы следить за изменениями в каталоге Bootstrap:

while inotifywait -r -q --format %w bootstrap/; do
    echo "something happened"
    [[ $filename == *.js ]] && uglifyjs .....
    [[ $filename == *.less ]] && lessc bootstrap.less
done

Вам не нужно беспокоиться о внутренних компонентах, но я просто не могу вернуть имя файла в область bash. inotifywait echos из имени файла (с помощью аргумента формата), но как его захватить и использовать позже (в моем случае, как $filename)?

[d3 ] Если вам нужна простая короткая тестовая жгут:

touch testfile
while inotifywait testfile do; echo "..."; done

И тогда вы можете просто запустить touch testfile, когда вы хотите ее запустить.

1
задан 3 December 2013 в 15:11

1 ответ

Оказывается, мне просто нужно было реструктурировать while, чтобы я захватил вывод inotifywait:

while true; do
    echo "something happened"
    filename=$(inotifywait -r -q --format %w bootstrap/)
    [[ $filename == *.js ]] && uglifyjs .....
    [[ $filename == *.less ]] && lessc bootstrap.less
done

Мне все еще интересно узнать, есть ли более чистые способы сделать это .

2
ответ дан 24 May 2018 в 14:37
  • 1
    Ответ by @abergmeier является непрерывным, поэтому вы не пропустите события, которые происходят во время обработки, например: uglifyjs или lessc и т. Д. – bucabay 23 November 2014 в 19:04

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

Похожие вопросы: