수정된 파일 내용을 매개변수로 사용

수정된 파일 내용을 매개변수로 사용

스크립트에서 Mercurial 저장소를 지우고 $FILENAME에서 읽은 많은 (구성 가능한) 파일 패턴을 유지할 수 있기를 원합니다. hg 명령의 구문은 다음과 같습니다.

hg purge --all --exclude PATTERN1 --exclude PATTERN2 ...

따라서 $FILENAME에 파일 패턴 목록(한 줄에 하나의 패턴)이 포함된 경우 명령줄을 구성하려면 각 패턴 앞에 "--exclude"를 붙여야 합니다.

현재 접근 방식은
grep -v -E "^[[:blank:]]*$" $FILENAME | sed "s/^/--exclude /g" | xargs echo
빈 줄과 탭 또는 공백만 포함된 줄을 건너뛰는 매개 변수 목록을 작성하는 것입니다. 이를 사용하여 위의 명령줄을 작성하는 데 사용하면 오류가 발생합니다. 그래서 전체적으로 :

hg purge --all `grep -v -E "^[[:blank:]]*$" $FILENAME | sed "s/^/--exclude /g" | xargs echo`

내가 모르는 일부 xargs 매개 변수를 사용하는 더 좋은 방법이 있습니까?

답변1

Mercurial 자체에는 파일 목록을 사용하는 간단한 방법도 있는 것 같습니다(#mercurial에서 mg이 제안함).
hg purge --all --exclude "listfile:$FILENAME"

답변2

grep왜 and 를 사용하고 싶은지 전혀 이해가 되지 않습니다 xargs. 다음과 같은 스키마 파일이 제공됩니다.

foo
bar
baz

넌 달릴 수 있어

$ echo hg purge --all $(perl -pe 's/^/--exclude /' file)
hg purge --all --exclude foo --exclude bar --exclude baz

심지어

$ echo hg purge --all $(sed 's/^/--exclude /' file)
hg purge --all --exclude foo --exclude bar --exclude baz

echo실제로 명령을 실행하려면 삭제하세요 .

관련 정보