grep
usa a string "$NAME.${var}\$"
como expressão regular. Presumivelmente, antes de sua linha de código preocupante, as variáveis de shell name
e var
tinham valores designados, para que o shell interpretasse seus valores de script para $NAME
e ${var}
. Como o "$" final da expressão regular é escapado com uma barra invertida, o shell que interpreta seu script não tenta interpolar o valor de uma variável do shell. O "$" é passado para grep
como parte da expressão regular. E, de fato, "$" tem um significado especial para grep
no contexto de uma expressão regular. "$" significa "fim de linha" para grep
. Nada além da semântica do que você usa grep
exige o "$" final.