'grep -q string file' , em backticks (ou dentro de $(...) , que é preferível ), será substituído pela saída de grep . Essa será uma string vazia, pois -q é usado.
Para negar um teste, basta inserir ! antes dele:
if ! grep -q pattern file; then
echo not found
else
echo found
fi
Se você realmente deseja pesquisar uma string (em vez de uma expressão regular), use também -F with grep .