在cygwin中使用带有xargs的子字符串

时间:2016-08-30 14:00:54

标签: git bash cygwin substring

我正在尝试在cygwin中的xargs管道语句的{}部分使用子字符串功能。这是我没有子串的命令:

git branch -r --merged master | grep "feature/" | xargs -I {} git push origin :{}

这几乎是我需要它做的,但前两个部分生成的命令字符串前面有一个“origin /”。所以我只需要切断它。我读到了使用${str:n}作为子字符串。这就是我试图使用它的方式:

git branch -r --merged master | grep "feature/" | xargs -I {} git push origin :${{}:7}

但是我收到了“错误替换”错误消息,因为看起来该命令需要一个变量而不喜欢{}。我知道我可以通过编写一个简单的bash脚本迭代git branch -r --merged master | grep "feature/"生成的列表来解决这个问题,但我猜测我可以改变一些小的语法来实现这一点。

1 个答案:

答案 0 :(得分:2)

{}不是shell变量。您可以将其传递给bash -c命令行:

git branch -r --merged master | grep "feature/" | 
xargs -I {} bash -c 'git push origin ":${1#origin/}"' - {}

${1#origin/}"会在origin/开头删除$1