inotifywait Для запуска команды в зависимости от типа измененного файла

Я специально пытаюсь одновременно смотреть 2 разных типа файлов в 2 подкаталогах:

Типы файлов.coffee в подкаталоге 'js'
Типы файлов.styl в подкаталоге 'css'

Я знаю только столько bash, и я пытаюсь заставить что-то подобное функционировать

while inotifywait --format %w%f ./{css,js}/*.{styl,coffee}; do
  # regex pattern to match the file ending
  # and define it to $ending

  if[ $ending == coffee ]
  then
   coffee -c $file
  elif[ $ending == styl ]
  then
    stylus -c $file
  fi
done



// Редактируем // изменили эту строку:

while inotifywait --format %w%f ./{css,js}/*.{styl,coffee}; do

Итак, теперь он проверяет оба файла, но если в папке css нет файлов.coffee или в js.styl, возвращается ошибка, что файлы не найдены.

Кроме того, я заметил, что когда я запускаю этот скрипт, он возвращает / запускает следующие 3 раза

Setting up watches.
Watches established.
./css/styles.styl

1 ответ

Не самое чистое решение, но работает

#!/bin/sh

while file=$(inotifywait -r -e modify --format "%w%f" ./); do
  EXT=${file##*.}
  if [ $EXT = "styl" ]
  then
    stylus -c $file
  fi
  if [ $EXT = "coffee" ]
  then
    coffee -c $file
  fi
done

Если у вас есть лучшее решение, которое просматривает только те файлы, которые я хочу, тогда я весь в ушах

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