14 我有一个脚本,在某些情况下,stdout上可能没有任何内容。在脚本的最后,我使用xargs将必须的行传递给另一个命令。我的问题是,当stdout上没有任何内容时,我收到典型的“用法:程序arg1 arg2”错误消息。 如何避免这种情况? bash xargs — 理查德 source 8 在答案中移动“编辑”并接受您自己的答案。这样,您的发现将对其他人有用。meta.unix.stackexchange.com/questions/809/... — andcoz 1 当时积分不足。现在就做。 — 理查德
13 您需要一个-r或--no-run-if-empty选项。 请记住,这种特殊行为很难跨平台。默认xargs运行的BSD版本-r。GNU版本需要它。FreeBSD版本的xargsignores -r标志与GNU兼容。Mac OS X版本甚至不接受该标志并引发错误illegal option。 然后,您可以选择基于OS检测$OSTYPE来编写跨平台脚本。更好的是,尝试检测xargs自身的行为。使用来运行它,-r如果失败(状态码> 0),则不使用来运行它-r。 — 丹尼斯 source