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
Если у вас есть лучшее решение, которое просматривает только те файлы, которые я хочу, тогда я весь в ушах