fswatch 解析参数未返回预期值?

fswatch parsed argument not returning expected value?

我可能误解了 fswatchxargs -I {} 解析参数。这应该 return 我指定目录中任何新事件的文件路径,对吗?

我下面的命令旨在监视 /my/path/to/watch 并在 /my/path/to/watch 中发生新事件时触发 my_script.pymy_script.py 需要与新事件关联的文件路径,这就是我认为我通过 {}.

传递的路径

我的命令:

fswatch -0  /my/path/to/watch | xargs -0 -n 1 -I {} python my_script.py {} > fswatch.output &

my_script.py,我有

import sys
print sys.argv[0]

但这只是 returns my_script.py 我期望它 return 与 /my/path/to/watch.[=22= 中的新事件关联的文件路径]

我在这里错过了什么?

当您从终端执行程序时,第一个参数将始终是您的程序的名称,这意味着 sys.argv[0] 将是您的脚本的名称。您想要使用的可能是 sys.argv[1],因为 sys.argv[0] 之后的所有内容都是传递给脚本的实际参数。

你可以这样看:

$ python my_script.py foo var

sys.args 看起来像这样:

|     0        |  1  |  2  | 
| my_script.py | foo | var |

基本上,sys.args[0] 是脚本的名称,sys.argv[1] 等是传递给它的实际参数。