I\'m writing a shell script, and I\'m trying to check if the output of a command contains a certain string. I\'m thinking I probably have to use grep, but I\'m not sure how.
Testing $?
is an anti-pattern
if ./somecommand | grep -q 'string'; then
echo "matched"
fi
Another option is to check for regular expression match on the command output.
For example:
[[ "$(./somecommand)" =~ "sub string" ]] && echo "Output includes 'sub string'"
Test the return value of grep:
./somecommand | grep 'string' &> /dev/null
if [ $? == 0 ]; then
echo "matched"
fi
which is done idiomatically like so:
if ./somecommand | grep -q 'string'; then
echo "matched"
fi
and also:
./somecommand | grep -q 'string' && echo 'matched'
A clean if/else conditional shell script:
if ./somecommand | grep -q 'some_string'; then
echo "exists"
else
echo "doesn't exist"
fi