Итак, я делаю простой цикл 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
, когда захотите его запустить.
Более чистый способ проиллюстрирован в этой записи блога :
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
Мне все еще интересно узнать, есть ли более чистые способы сделать это.