我正在尝试在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/"
生成的列表来解决这个问题,但我猜测我可以改变一些小的语法来实现这一点。
答案 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
。