Как мне получить имя файла из событий 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
выведите имя файла (с помощью аргумента формата), но как мне его перехватить и использовать позже (в моем случае, как $filename
)?
Если вы хотите простой, короткий тестовый комплект:
touch testfile
while inotifywait testfile do; echo "..."; done
И тогда вы можете просто запустить touch testfile
когда вы хотите вызвать его.
2 ответа
Решение
Более чистый способ проиллюстрирован в этой записи блога:
inotifywait -m -r -q --format '%w' bootstrap/ | while read FILE
do
echo "something happened on path $FILE"
done
Оказывается, мне просто нужно было реструктурировать while
так что я захватил вывод inotifywait
:
while true; do
echo "something happened"
filename=$(inotifywait -r -q --format %w bootstrap/)
[[ $filename == *.js ]] && uglifyjs .....
[[ $filename == *.less ]] && lessc bootstrap.less
done
Мне все еще интересно узнать, есть ли более чистые способы сделать это.