I would have coded it this way:
/usr/bin/rm -v `ls -1|egrep -ve '(^ZMAT|^out|^Out|^GENBAS|^Note)'`

And bash is a shell, but you mean a script.  Likely in interactive bash the * are getting expanded so you might have to use noglob to suppress it or something similar.

Or you might have to use a single quote to suppress the expansion so that rm gets the *, otherwise the shell expands the * and rm gets a list of files.