SmartOS(SunOS)에서 "xargs -n"이 다른 구현과 다르게 동작하는 이유는 무엇입니까?

SmartOS(SunOS)에서 "xargs -n"이 다른 구현과 다르게 동작하는 이유는 무엇입니까?

-nSmartOS(Solaris인 것 같습니다)에 있는 xargs 옵션은 제가 만난 다른 버전의 xargs와 다르게 동작하는 것 같습니다 .

예를 들어:

내장 /usr/bin/xargs(이상한 동작):

# printf 'one\0two\0three' | xargs -0 -I{} -n 1 echo "- {}"
- {} one
- {} two
- {} three

GNU Findutils /opt/local/bin/xargs(예상 동작):

# printf 'one\0two\0three' | /opt/local/bin/xargs -0 -I{} -n 1 echo "- {}"
- one
- two
- three

MacOS, NetBSD 및 CentOS의 Xargs는 모두 이전 예제와 동일하게 동작합니다. SmartOS xargs는 어떻게 다릅니까?

SmartOS xargs 맨페이지에서:

   -n number
                  Invokes utility using as many standard input arguments
                  as possible, up to number (a positive decimal integer)
                  arguments maximum. Fewer arguments are used if:

                      o      The command line length accumulated exceeds
                             the size specified by the -s option (or
                             {LINE_MAX} if there is no -s option), or

                      o      The last iteration has fewer than number, but
                             not zero, operands remaining.

Gnu Findutils xargs 맨페이지에서:

   -n max-args, --max-args=max-args
          Use at most max-args arguments per command line.  Fewer than max-args arguments will be used if the size (see the -s option) is  exceeded,  un‐
          less the -x option is given, in which case xargs will exit.

쉘 스크립트를 이식할 때 이러한 차이점을 발견했는데 왜 동작이 다른지 아는 사람이 있는지 궁금합니다.

답변1

-I및 옵션을 결합할 수 없습니다 -n. 이것은기준설명하다:

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

당신은 또한 볼 수 있습니다이것그리고이것.

관련 정보