1

我有一个 bash 脚本,我想在每次更改文件系统时触发一个方法:

#!/bin/bash

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

run

fswatch . src | 'run'

在这种情况下,我正在查看src文件夹。

当我通过触发脚本时

./automater.sh

脚本第一次正确执行该run函数,然后当我更改某些文件时,脚本简单地退出......

4

1 回答 1

1

BUT then it runs in a loop....,我也打了这个,因为在你./automater.sh执行之后,你的目录中有一些新的文件更改,你可以使用排除选项来忽略这些文件,在我的例子中像:

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

  • -l,每 5 秒检查一次文件更改
  • -o,将所有更改批处理到一个数字
  • -e,排除文件,“.*”表示先排除所有文件
  • -i,包含文件,“\.py$”表示包含所有.py文件
  • || true,似乎需要在你在 shell 脚本中使用时让你的命令返回 true,我用这个技巧来解决only first time correctly问题

您也可以fswatch . src在单独的终端窗口中运行您的“运行”命令,以查找新更改是什么。

于 2017-09-20T03:24:49.843 回答