Bash Script - fswatch trigger bash function

I have a bash script where I want to trigger a method every time the filesystem is changed:


function run {
    echo Do some magic
    // Do some magic


fswatch . src | 'run'

In this case I am watching the src folder.

When I trigger the script via


the script executes the run function the first time correctly and when I then change some file, the script simply exits...


BUT then it runs in a loop...., I also hit this, because after your ./ execution, there are some new file changes in your directory, you can use exclude option to ignore these files, in my case like:

    do \
        unittest || true
  • -l, check file changes every 5 seconds
  • -o, to batch all changes to one number
  • -e, exclude file, ".*" means exclude all files firstly
  • -i, include file, "\.py$" means include all .py files
  • || true, seems need to make your command return true when your use in shell script, I use this trick to solve only first time correctly issue

Also you can run fswatch . src and your 'run' command in separate terminal window to find what are the newly changes are.

Posted on by hanks