您好,我正在尝试编写一个 shell 命令:
- 观看文件夹
- 当文件发生变化时,将新文件复制到某处
- 然后运行一个 make 任务
fswatch./src | xargs -I {} cp {} ./otherfolder
前两件事与上面的命令一起工作,但我不知道如何在这之后运行命令。
我试过了
fswatch./src | xargs -I {} cp {} ./otherfolder && make
那行不通,因为我认为 && 与 xargs 冲突
fswatch./src | xargs -I {} cp {} ./otherfolder |制作
这里会立即调用 make 命令,而不是在复制完成之后。 (它甚至在 fswatch 触发更改之前被调用)
是否可以使用 xargs 在 cp 之后运行命令?
最佳答案
解决该问题的一种方法是生成一个 shell:
fswatch ./src | xargs -I {} sh -c "cp '{}' ./otherfolder && make"
双引号中的内容在单独的 shell 中执行,并且会按您预期的方式运行(首先复制,然后执行 make,假设复制成功)。
{}
两边的单引号用于防止文件名包含空格或其他字符(例如 *
)时出现问题,否则这些字符会被 shell 扩展。
关于linux - 在使用 xargs 和 fswatch 的命令之后运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35196643/