嗨,我正在尝试编写一个shell命令,它可以:
fswatch ./src | xargs -I {} cp {} ./otherfolder
前两件事是使用上面的命令,但我不知道如何在此之后运行命令。
我试过了
fswatch ./src | xargs -I {} cp {} ./otherfolder && make
这不起作用,因为我认为&&与xargs冲突。
fswatch ./src | xargs -I {} cp {} ./otherfolder | make
这里立即调用make命令,而不是在复制完成后调用。(在fswatch触发更改之前甚至会调用它)
是否可以使用xargs在cp之后运行命令?
发布于 2016-02-04 09:06:16
解决这一问题的一种方法是生成一个shell:
fswatch ./src | xargs -I {} sh -c "cp '{}' ./otherfolder && make"
双引号的内容在单独的shell中执行,并将按照您的预期运行(首先是复制,然后是make,假设副本成功)。
建议{}
周围的单引号防止文件名包含空格或其他字符(如*
)时出现问题,否则将由shell展开。
https://stackoverflow.com/questions/35196643
复制相似问题