In bash -e option stops executing after an error and grep commands returns a non-zero status in case it does not find for the pattern it is looking for. I want to use grep inside an if statement, something like
#/bin/bash -e if [[ `grep str /usr/lib/file.txt` -eq 0 ]] //do something fi
If i use $? to get the statement of last command, then the execution stops after last command as grep returns non-zero status. There must be some way to accomplish this, need help finding it
Advertisement
Answer
Just do it in-place:
#/bin/bash -e if grep -q str /usr/lib/file.txt; then echo "Found str" else echo "Didn't find str" fi
Note the -q
(--quiet
) option of grep
, we are only interested in the exit status.