如何testing(在一行中)如果命令输出包含某个string?
在bash的一行中,当/usr/local/bin/monit --version
的输出不包含5.5
和退出状态为1时,如何返回退出状态0?
! /usr/local/bin/monit --version | grep -q 5.5
(如果find匹配,则grep
返回0的退出状态,否则返回1; -q
选项“quiet”表示不打印它find的任何匹配;换句话说,它告诉grep
唯一的一件事想要的是它的返回值, !
开始时反转了整个pipe道的退出状态。)
编辑补充:另外,如果你想在“纯粹的Bash”(而不是调用grep
)中做到这一点,你可以写:
[[ $(/usr/local/bin/monit --version) != *5.5* ]]
( [[...]]
在Bash参考手册的第3.2.4.2节“条件构造”中进行了解释。 *5.5*
就像在fileglobs中:零个或多个字符,外加5.5
,外加零个或多个字符。
[ $(/usr/local/bin/monit --version) == "5.5" ]
eg-1:检查成功
[ $(/usr/local/bin/monit --version) == "5.5" ] && echo "OK"
例如-2:检查失败
[ $(/usr/local/bin/monit --version) == "5.5" ] || echo "NOT OK"
或者,只是检查输出是否包含5.5
:
[[ $(/usr/local/bin/monit --version) =~ "5.5" ]] || echo "NOT OK"