2016-08-30 4 views
2

Ich versuche Teilzeichenfolge Funktionalität mit auf dem {} Teil eines xargs verrohrt Anweisung in Cygwin zu verwenden. Hier ist mein Befehl ohne Teilzeichenfolge:Mit String mit xargs in Cygwin

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

Das ist fast, was ich brauche es zu tun, aber die Befehlsfolge, die durch die ersten beiden Teile hat einen „origin /“ vor ihm. Also muss ich das einfach abschneiden. Ich lese über die Verwendung ${str:n} für Teilstring. Dies ist, wie ich versuche, es zu benutzen:

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

aber ich bin immer die „schlechte Substitution“ Fehlermeldung, da es sieht so aus, dass Befehl eine Variable muss und nicht wie die {}. Ich weiß, dass ich das wahrscheinlich umgehen könnte, indem ich ein einfaches Bash-Skript schreibe, um über die von git branch -r --merged master | grep "feature/" generierte Liste zu iterieren, aber ich vermute, dass es eine kleine Syntax gibt, die ich ändern könnte, damit das funktioniert.

Antwort

2

{} ist kein Shell-Variable. Sie können es auf bash -c Befehlszeile übergeben:

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

${1#origin/}"origin/ zu Beginn der $1 entfernen.