0

我正在尝试使用以下技术将 fswatch 的输出通过管道传输到 shell 脚本中的多个命令:

$ fswatch -0 [opts] [paths] | xargs -0 -n 1 -I {} [command]

而不是 [command] 我放了 shell 脚本路径。这是我的命令行:

fswatch -0 -Ie ".*\.*$" -i ".*\.mp4$" ~/Desktop/encoding\ tests | xargs -0 -n 1 -I {} ~/Desktop/s3cmd.sh

脚本如下:

#!/bin/sh 
terminal-notifier -message "s3cmd Upload {}" ; 
s3cmd sync --acl-public -m video/mp4 --add-header=Cache-Control:public,max-age=2052000 {} s3://saltanat-test/ && 
terminal-notifier -message "s3cmd Upload of {} done"

抱歉,我对 shell 脚本没有经验。如何将 fswatch 输出通过管道传输到脚本中?

谢谢你。

4

2 回答 2

0
#!/bin/bash
fswatch -0 -x --event Created --event Updated --event Renamed -Ie '.*\.*$' -i '.*\.mp4$' ~/Desktop/encoding\ tests \
     | xargs -0 -n 1 ~/Desktop/s3cmd-3.sh

这行得通。谢谢。

于 2016-12-28T11:08:51.097 回答
0

对于将来有这个问题的任何人:

fswatch 命令:

fswatch -0 /path/to/watch | xargs -0 -n 1 -I {} ~/yourfile.sh {}

.sh 文件:

#!/bin/bash
echo $1

现在 $1 将等于 fswatch 的输出,它是被更改文件的完整路径。

于 2018-06-14T07:49:50.403 回答