我有一个脚本,在某些情况下可能在标准输出上没有任何内容。在脚本的末尾,我使用 xargs 将我必须的行传递给另一个命令。我的问题是,当标准输出上没有任何内容时,我会收到典型的“用法:程序 arg1 arg2”错误消息。
我怎样才能避免这种情况?
小智 13
您需要一个-r
或--no-run-if-empty
选项。
请记住,这种特殊行为很难跨平台。默认情况下xargs
运行的BSD 版本-r
。GNU 版本需要它。FreeBSD 版本的xargs
忽略-r
标志与 GNU 兼容。Mac OS X 版本甚至不接受该标志并引发错误illegal option
。
然后,您可以选择使用基于的操作系统检测$OSTYPE
来编写跨平台脚本。更好的是,尝试检测xargs
自身的行为。运行它,-r
如果失败(状态代码> 0),请在没有-r
.