使用 osx 中的 xargs 接受 fswatch 中更改文件的名称
Accepting name of changed file in fswatch with xargs in osx
在 osx 中,我试图检测何时将新文件添加到文件夹,然后执行脚本来处理该新文件。看起来很简单吧?
我正在这样做:
fswatch -0 ~/motion-detection | xargs -0 -n1 -I {} ./detectmotion.sh
这将调用 shell 脚本 detectmotion.sh,其中包含:
echo "File added: "
至少现在是这样。我只想将更改后的文件的文件名传递给 detectmotion.sh
我花 1 美元得到一张空白纸
谁能看出我做错了什么?
提前致谢!
它应该是空,因为您没有将参数传递给从xargs
获得的脚本detectmotion.sh
。应该是
fswatch -0 ~/motion-detection | xargs -0 -n1 -I {} ./detectmotion.sh "{}"
请记住,xargs
中的 -I {}
标志代表一个 占位符 ,用于管道连接到 xargs
的值。因此,在您尝试作为问题的一部分时,您只是将值存储在占位符({}
)中,而不是实际将其传递给脚本以使其有用。
所以我修改了命令,以便您实际上将接收到的值传递给脚本,现在可以在脚本中以 </code> 访问时打印该脚本。</p>
<p>引用 <code>man xargs
页面 -I
-I replace-str
Replace occurrences of replace-str in the initial-arguments with names read from
standard input. Also, unquoted blanks do not terminate input items; instead the
separator is the newline character. Implies -x and -L 1.
在我们的例子中,replace-str
被用作 {}
。
在 osx 中,我试图检测何时将新文件添加到文件夹,然后执行脚本来处理该新文件。看起来很简单吧?
我正在这样做:
fswatch -0 ~/motion-detection | xargs -0 -n1 -I {} ./detectmotion.sh
这将调用 shell 脚本 detectmotion.sh,其中包含:
echo "File added: "
至少现在是这样。我只想将更改后的文件的文件名传递给 detectmotion.sh
我花 1 美元得到一张空白纸
谁能看出我做错了什么?
提前致谢!
它应该是空,因为您没有将参数传递给从xargs
获得的脚本detectmotion.sh
。应该是
fswatch -0 ~/motion-detection | xargs -0 -n1 -I {} ./detectmotion.sh "{}"
请记住,xargs
中的 -I {}
标志代表一个 占位符 ,用于管道连接到 xargs
的值。因此,在您尝试作为问题的一部分时,您只是将值存储在占位符({}
)中,而不是实际将其传递给脚本以使其有用。
所以我修改了命令,以便您实际上将接收到的值传递给脚本,现在可以在脚本中以 </code> 访问时打印该脚本。</p>
<p>引用 <code>man xargs
页面 -I
-I replace-str
Replace occurrences of replace-str in the initial-arguments with names read from
standard input. Also, unquoted blanks do not terminate input items; instead the
separator is the newline character. Implies -x and -L 1.
在我们的例子中,replace-str
被用作 {}
。