如何打印导致 fswatch 执行某些操作的文件路径

How to print file path that caused fswatch to do something

我使用 fswatch 在文件更改时执行一些操作。我使用以下命令:

fswatch -o -r '.' | while read MODFILE
do
    echo 'Some file changed, so take some action'
done

这工作正常,如果我更改几个文件,我会在终端中看到以下内容:

Some file changed, so take some action
Some file changed, so take some action
Some file changed, so take some action
etc.

但我也想知道究竟是哪个文件导致了该操作。所以我查看了 fswatch 手册页,其中显示如下:

fswatch writes a record for each event it receives containing:
     -       The timestamp when the event was received (optionally).
     -       The path affected by the current event.
     -       A space-separated list of event types (see EVENT TYPES ).

但如前所述,我的终端中没有看到任何列出的内容。有人知道我如何显示“受当前事件影响的路径。”吗?

欢迎所有提示!

当然,使用这个:

fswatch --batch-marker=EOF -xn . | while read file event; do 
   echo $file $event
   if [ $file = "EOF" ]; then 
      echo TRIGGER
   fi
done

如果您想将受影响文件的名称保存在列表中,您可以这样做:

#!/bin/bash
fswatch --batch-marker=EOF -xn . | while read file event; do
    if [ $file = "EOF" ]; then
       echo TRIGGER
       echo Files: "${list[@]}"
       list=()
    else
       echo $file $event
       list+=($file)
    fi
done