Donc, je fais une simple boucle inotifywait
pour surveiller les changements dans un répertoire Bootstrap:
while inotifywait -r -q --format %w bootstrap/; do
echo "something happened"
[[ $filename == *.js ]] && uglifyjs .....
[[ $filename == *.less ]] && lessc bootstrap.less
done
Vous n'avez pas vraiment besoin de vous soucier des internes, mais je ne peux tout simplement pas récupérer le nom du fichier dans un champ bash. inotifywait
renvoie le nom du fichier (avec l'aide de l'argument de format), mais comment puis-je le capturer et l'utiliser plus tard (dans mon cas, en tant que $filename
)?
Si vous voulez un harnais de test simple et court:
touch testfile
while inotifywait testfile do; echo "..."; done
Et ensuite, vous pouvez simplement lancer touch testfile
lorsque vous voulez le déclencher.
La manière la plus propre est illustrée dans cette entrée de blog :
inotifywait -m -r -q --format '%w' bootstrap/ | while read FILE
do
echo "something happened on path $FILE"
done
Il s'avère que je devais simplement restructurer la while
afin de capturer le résultat de inotifywait
:
while true; do
echo "something happened"
filename=$(inotifywait -r -q --format %w bootstrap/)
[[ $filename == *.js ]] && uglifyjs .....
[[ $filename == *.less ]] && lessc bootstrap.less
done
Je suis toujours curieux de savoir s'il existe des moyens plus propres de le faire.