You could add
--color=always to your grep.
Relevant section from my local manpage:
Surround the matched (non-empty) strings, matching lines,
context lines, file names, line numbers, byte offsets, and
separators (for fields and groups of context lines) with escape
sequences to display them in color on the terminal. The colors
are defined by the environment variable GREP_COLORS. The
deprecated environment variable GREP_COLOR is still supported,
but its setting does not have priority. WHEN is never, always,
As this question on SO suggests, probably you have an alias for
grep that maps it to
grep --color=auto in your
.bashrc and that isn't read by the script, and so isn't applied within the script.