0을 입력하세요

0을 입력하세요

0을 입력하세요

echo foo | xargs -L 1 -I '{}' echo '{}'

출력 0

foo

1을 입력하세요

echo foo | xargs -I '{}' -L 1 echo '{}'

출력 1

{} foo

xargs 옵션의 순서를 변경하면 출력이 변경되는 이유는 무엇입니까?

버전:xargs (GNU findutils) 4.6.0

답변1

xargs에 제공된 옵션이 충돌하는 경우 순서가 중요할 수 있습니다.

IEEE Std 1003.1-2008, 2016 Edition/Open Group 기본 사양 7호xargs 사양에 다음 텍스트1을 추가합니다.

이것-나,-엘, 그리고-N옵션은 상호 배타적입니다. 명령줄에 여러 개가 제공되면 일부 구현에서는 지정된 마지막 옵션을 사용하고 다른 구현에서는 옵션 조합을 다르게 처리합니다.

이는 PWB/Unix의 원래 버전으로 거슬러 올라가는 xargs의 많은 구현 동작을 인코딩합니다.매뉴얼 페이지설명하다

플래그 충돌이 있는 경우(예:-엘그리고-N), 마지막 플래그가 우선합니다.

xargs의 GNU 버전에서는 -L이전 -I옵션이 비활성화됩니다. 두 번째 예에서는

echo foo | xargs -I '{}' -L 1 echo '{}'

{}echo대체 항목 없이 일반 매개변수만 에 전달됩니다 .

[1] 비교IEEE Std 1003.1, 2004 Edition/Open Group 기본 사양 6호.

관련 정보