繁体   English   中英

bash,重定向后不能使用xargs replstr

[英]bash, can't use xargs replstr after redirect

作为post-commit hook的一部分,我尝试将所有已更改的文件复制到本地文件夹中 - 使用此脚本(仅附加脚本的相关部分):

svnlook changed ${REPOS} -r ${REV} | sed "s/^....//" | xargs -I {} svnlook cat ${REPOS} {} -r ${REV} > /tmp/commit2/{}

它不会用xargs参数替换第二个{},而是按原样使用它(创建文件名'{}')。

是否可以在输出重定向后替换参数?

谢谢,Roi

不是那样的,没有。 shell执行重定向,而不是xargs xargs甚至没有“意识到”重定向正在发生。

您可以使用以下内容:

svnlook changed ${REPOS} -r ${REV} |
  sed "s/^....//" | 
  while read -r line ; do 
    svnlook cat ${REPOS} "$line" -r ${REV} > /tmp/commit2/"$line"
  done

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM