2016-08-30 12 views
2

我想在cygwin的xargs管道語句的{}部分使用子字符串的功能。這裏是我的命令,而不子:在cygwin中使用xargs的子字符串

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

這幾乎是什麼,我需要做的,而是由前兩個部分所產生的命令字符串在前面有一個「出身/」。所以我只需要切斷它。我讀了關於使用${str:n}的子字符串。這是我想要使用它:

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

,而是因爲它看起來像命令需要一個變量,不喜歡{}我得到「壞替代」的錯誤消息。我知道我可以通過編寫一個簡單的bash腳本來迭代由git branch -r --merged master | grep "feature/"生成的列表,但我猜測我可以改變一些小的語法來實現這個工作。

回答

2

{}不是shell變量。你可以把它傳遞給bash -c命令行:

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

${1#origin/}"將在$1開始刪除origin/

相關問題