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

标签 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/" 生成的列表来解决这个问题。但我猜想我可以更改一些小语法来使其正常工作。

最佳答案

{} 不是 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/

相关文章:

git - 获取 git 中不同分支的状态

svn - 使用 git-svn 处理 SVN 关键字扩展

bash - 响应 "write"消息

c - Beej 的服务器客户端套接字示例在 cygwin 中不起作用

Linux串口监听器和解释器?

c++ - 编译错误: "stddef.h: No such file or directory"

git - 什么相当于 git 中的 "svn propget svn:executable"?

git - 为 flask 应用程序创建 gitignore

python - 如何通过python命令使用python2.7?

linux - 无法理解 setuid/setgid