基于grep结果的回声

我需要一个显示“是”或“否”的class轮,无论grep是否find任何结果。

我玩过grep -c ,但没有成功。

怎么样:

 uptime | grep user && echo 'yes' || echo 'no' uptime | grep foo && echo 'yes' || echo 'no' 

那么你可以安静下来:

 uptime | grep --quiet user && echo 'yes' || echo 'no' uptime | grep --quiet foo && echo 'yes' || echo 'no' 

从grep手册页:

退出状态

通常,如果find选定的行,则退出状态为0,否则为1。 但是,如果发生错误,则退出状态为2,除非使用了-q或–quiet或–silent选项,并find选定的行。

不知道你是什么意思的“一class”,对我来说这是一个“class轮”

只需添加; if [ $? -eq 0 ]; then echo "Yes"; else echo "No"; fi ; if [ $? -eq 0 ]; then echo "Yes"; else echo "No"; fi ; if [ $? -eq 0 ]; then echo "Yes"; else echo "No"; fi后你grep命令

 bash$ grep ABCDEF /etc/resolv.conf; if [ $? -eq 0 ]; then echo "Yes"; else echo "No"; fi No bash$ grep nameserver /etc/resolv.conf; if [ $? -eq 0 ]; then echo "Yes"; else echo "No"; fi nameserver 212.27.54.252 Yes 

添加-q标志为grep,如果你想压制grep结果

 bash$ grep -q nameserver /etc/resolv.conf; if [ $? -eq 0 ]; then echo "Yes"; else echo "No"; fi Yes 

这个版本介于Weboide的版本和radius的版本之间:

 if grep --quiet foo bar; then echo "yes"; else echo "no"; fi 

它比前者更可读,它不会不必要地使用$? 像后者。