gpt4 book ai didi

linux - 在使用 xargs 和 fswatch 的命令之后运行命令

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:27:28 24 4
gpt4 key购买 nike

您好,我正在尝试编写一个 shell 命令:

  1. 观看文件夹
  2. 当文件发生变化时,将新文件复制到某处
  3. 然后运行一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com