【发布时间】:2016-02-04 09:03:28
【问题描述】:
您好,我正在尝试编写一个 shell 命令:
- 查看文件夹
- 当文件更改时,将新文件复制到某处
- 然后运行 make 任务
fswatch ./src | xargs -I {} cp {} ./otherfolder
前两件事可以使用上面的命令,但我不知道如何在此之后运行命令。
我试过了
fswatch ./src | xargs -I {} cp {} ./otherfolder && make
这不起作用,因为我认为 && 与 xargs 冲突
fswatch ./src | xargs -I {} cp {} ./otherfolder | make
这里立即调用 make 命令,而不是在复制完成之后。 (它甚至在 fswatch 触发更改之前调用)
是否可以在 cp 之后使用 xargs 运行命令?
【问题讨论】:
-
显然
fswatch继续运行,所以管道没有完成。&&在管道完成时发生。 (make的管道显然只是假的;cp没有有用的输出作为make的标准输入是有意义的。) -
另一个肮脏的黑客是:
fswatch ./src | xargs -I {} cp -v {} ./otherfolder | xargs -I {} make