echo based on grep result
Solution 1:
How about:
uptime | grep user && echo 'yes' || echo 'no'
uptime | grep foo && echo 'yes' || echo 'no'
Then you can have it quiet:
uptime | grep --quiet user && echo 'yes' || echo 'no'
uptime | grep --quiet foo && echo 'yes' || echo 'no'
From the grep manual page:
EXIT STATUS
Normally, the exit status is 0 if selected lines are found and 1 otherwise. But the exit status is 2 if an error occurred, unless the -q or --quiet or --silent option is used and a selected line is found.
Solution 2:
Not sure what you mean by "one liner", for me this is a "one liner"
Just add ; if [ $? -eq 0 ]; then echo "Yes"; else echo "No"; fi
after you grep command
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
Add -q flag to grep if you want to supress grep result
bash$ grep -q nameserver /etc/resolv.conf; if [ $? -eq 0 ]; then echo "Yes"; else echo "No"; fi
Yes
Solution 3:
This version is intermediate between Weboide's version and radius's version:
if grep --quiet foo bar; then echo "yes"; else echo "no"; fi
It's more readable than the former and it doesn't unnecessarily use $?
like the latter.