2016-08-30 4 views
2

私はcygwinのxargsパイプ文の{}部分に部分文字列機能を使用しようとしています。ここに私のコマンドは、サブストリングなしだ:cygwinでxargsで部分文字列を使用する

git branch -r --merged master | grep "feature/" | xargs -I {} git push origin :{} 

これは、私はそれが何をする必要があるかほとんどですが、最初の2つの部分によって生成されたコマンド文字列は、その前に「/起源」を持っています。だから私はこれをカットオフする必要があります。私は部分文字列に${str:n}を使用することについて読んでいます。

git branch -r --merged master | grep "feature/" | xargs -I {} git push origin :${{}:7} 

をしかし、そのコマンドは変数を必要とし{}を好きではないように見えるので、私は「悪い置換」のエラーメッセージが出てい:これは、私はそれを使用しようとしている方法です。 git branch -r --merged master | grep "feature/"によって生成されたリストを反復するための単純なbashスクリプトを書くことでこれを回避することができますが、これを得るために変更できる小さな構文があると思います。

答えて

2

{}はシェル変数ではありません。 $1の開始時にorigin/を削除します

git branch -r --merged master | grep "feature/" | 
xargs -I {} bash -c 'git push origin ":${1#origin/}"' - {} 

${1#origin/}":あなたはbash -cコマンドラインにそれを渡すことができます。

関連する問題