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
대체 항목 없이 일반 매개변수만 에 전달됩니다 .