Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 在cygwin中使用带有xargs的子字符串_Git_Bash_Cygwin_Substring - Fatal编程技术网

Git 在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

我试图在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/}“
将删除
origin/
开头的
$1