如果生成任何标准输出,Linux 命令行将失败

Dav*_*d B 7 shell-script text-processing

是否有一个简单的实用程序,我可以在 Linux 上将输出通过管道传输到它:

  • 如果标准输出(和/或标准错误)上没有输出,则返回成功代码。
  • 如果在标准输出(和/或标准错误)上产生输出,则返回失败代码。

为了提供一些上下文,我正在运行的命令是:

svn mergeinfo --show-revs eligible
http://mysvnserver.example.com/SVF/repos/common/abc/branches/abc-1.7
http://mysvnserver.example.com/SVF/repos/common/abc/trunk
Run Code Online (Sandbox Code Playgroud)

如果分支上有任何未合并的条目,该命令将在标准输出上返回修订号列表。理想情况下,我正在谈论的附加命令是:

  • 检测标准输出上的条目并将错误条件返回给 Linux。
  • 传递标准输出,以便它最终出现在终端上。我宁愿不压制它。

Sté*_*las 11

这就是grep你要找的:

if svn ... 2>&1 | grep '^'; then
  echo "there was some output"
else
  echo "there wasn't"
fi
Run Code Online (Sandbox Code Playgroud)

您可以替换grep '^'grep .grep '[^[:blank:]]'以检查非空或非空白行(但这将从输出中删除空/空白行)。

(请注意,grep如果输入包含非文本数据,如 NUL 字节或太长或未终止的行(svn虽然不会发生),则行为会因实现而异。