Por padrão, grep
usa expressões regulares básicas (BRE). Dê uma olhada em qualquer recurso sobre o BRE (por exemplo, man grep
e man regex
) para aprender a sintaxe. O $
em "$var"
não está sendo passado para grep
porque é especial para o shell. Se você tiver uma variável de shell chamada var
, sua expansão é o que grep
realmente vê. Se você não o fizer, então grep
apenas recebe uma string vazia que combina com todos os lugares.
EDIT: A partir da especificação POSIX para BRE , os caracteres especiais são *
, ^
, $
, .
, [
, \
Se você quiser apenas combinar cadeias literais sem ter que se preocupar com quais caracteres têm um significado especial em BREs, você provavelmente deveria estar usando fgrep
/ grep -F
(eles são a mesma coisa; ambos combinam cadeias fixas).