Bash Script - fswatch trigger bash function

余生长醉 提交于 2021-02-08 09:47:38

问题


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

#!/bin/bash

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

run

fswatch . src | 'run'

In this case I am watching the src folder.

When I trigger the script via

./automater.sh

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


回答1:


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

fswatch -l 5 -o -e ".*" -i "\\.py$" . | while read; \ do \ unittest || true done

  • -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.



来源:https://stackoverflow.com/questions/45999364/bash-script-fswatch-trigger-bash-function

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!