Solaris為什麼 SmartOS (SunOS) 上的
為什麼 SmartOS (SunOS) 上的 xargs -n
的行為與其他實現不同?
-n
在 SmartOS(我假設是 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.
我在移植 shell 腳本時發現了這種差異,我很好奇是否有人知道為什麼行為不同。
不能組合
-I
和-n
選項。這就是標準所說的:、
-I
和選項是互斥的-L
。-n
如果在命令行上給出了多個,則某些實現使用指定的最後一個;其他實現以不同方式處理選項的組合。