2016-08-30 2 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} 

을하지만 명령은 변수를 필요로하고 {}을 좋아하지 않는 것 같습니다 때문에 나는 "나쁜 대체"오류 메시지를 받고 있어요 : 이것은 내가 그것을 사용하려고 해요 방법이다. 나는 아마 이것 주위에 git branch -r --merged master | grep "feature/"에 의해 생성 된리스트를 반복하는 간단한 bash 스크립트를 작성하여이 문제를 해결할 수 있음을 알고 있지만이 작은 작업을하기 위해 변경할 수있는 몇 가지 작은 구문이 있다고 생각합니다.

답변

2

{}은 셸 변수가 아닙니다. 당신은 bash -c 명령 행에 전달할 수 있습니다

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

${1#origin/}"$1의 시작 origin/을 제거합니다.

관련 문제