我正在尝试在 {}
上使用子字符串功能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/"
生成的列表来解决这个问题。但我猜想我可以更改一些小语法来使其正常工作。
最佳答案
{}
不是 shell 变量。您可以将其传递到 bash -c 命令行:
git branch -r --merged master | grep "feature/" |
xargs -I {} bash -c 'git push origin ":${1#origin/}"' - {}
${1#origin/}"
将删除 $1
开头的 origin/
。
关于git - 在 cygwin 中使用带有 xargs 的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39229599/