Как мне получить имя файла из событий 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, когда захотите его запустить.

5
задан 3 December 2013 в 13:11

2 ответа

Более чистый способ проиллюстрирован в этой записи блога :

inotifywait -m -r -q --format '%w' bootstrap/ | while read FILE
do
  echo "something happened on path $FILE"
done
0
ответ дан 3 December 2013 в 13:11

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

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

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

0
ответ дан 3 December 2013 в 13:11
  • 1
    Если Вы находитесь на Ubuntu, и использование Единицы Делают это.. Нажмите Windows / Super Key на Вашем Keyborad.. и файлы Типа. Результатом поиска кулака, который Вы получаете, является Файловый менеджер. Нажмите на него, и это откроет Файловый менеджер. Тогда ищите свой раздел Windows в Нижней левой Стороне. Cick на нем для монтирования его. (Это верно, только если Вы имеете Двойной, загрузил Вашу Систему.) Тогда можно скопировать по Вам Персональные Файлы от Ubuntu до Windows7 – Rajat Pandita 29 May 2015 в 06:58

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

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