如何检查管道输入是否与字符串完全匹配,最好是在一行中?
例如:
some command | <check that equals "foo" exactly>
如果它是完全匹配,它将返回退出代码0。
我尝试使用grep,但如果输入是&#34; foobar&#34;我不想要退出代码为0。例如,只有它恰好是&#34; foo&#34;
答案 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
输出。