Git 在cygwin中使用带有xargs的子字符串
我试图在cygwin中xargs管道语句的Git 在cygwin中使用带有xargs的子字符串,git,bash,cygwin,substring,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 maste
{}
部分使用子字符串功能。以下是不带子字符串的命令:
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/”
生成的列表,但我猜我可以修改一些小语法来实现这一点。{}
不是shell变量。您可以将其传递到bash-c
命令行:
git branch -r --merged master | grep "feature/" |
xargs -I {} bash -c 'git push origin ":${1#origin/}"' - {}
${1#origin/}“
将删除origin/
开头的$1