在bash中检查管道输入完全匹配字符串

时间:2018-05-15 15:24:54

标签: bash

如何检查管道输入是否与字符串完全匹配,最好是在一行中?

例如:

some command | <check that equals "foo" exactly>

如果它是完全匹配,它将返回退出代码0。

我尝试使用grep,但如果输入是&#34; foobar&#34;我不想要退出代码为0。例如,只有它恰好是&#34; foo&#34;

2 个答案:

答案 0 :(得分:4)

您可以捕获输出。

[[ $(some command) == "foo" ]]

答案 1 :(得分:2)

也许是这样的?

some command | cmp <(echo "expected output (plus a newline by echo)")

在这里,cmp将比较其标准输入的内容(因为只给出一个文件)和进程替换&#34;文件&#34; <(…),在这种情况下是命令echo "…"。请注意,echo会在其输出中附加换行符,可以使用-n或使用printf来抑制该换行符。

您可能还希望--silence cmp的输出(请参阅man cmp)。

diff命令的运行方式与cmp类似。

另一种解决方案可能是使用grep,但没有最终方法可以确保它与#strong>完全&#34;匹配,具体取决于所涉及的新行some command输出。