I don't understand why $Namefile* takes these names.As far as I know * calls the the argument which the script receives.
$ Namefile expande para o valor que você passou (provavelmente "hw"). Isso significa que $ Namefile * após a expansão da variável se torna "hw *".
Quando esta string é usada em um local onde é interpretada como um nome de arquivo, o * é especial. Veja "expansão do nome do caminho" na página man.
... bash scans each word for the characters *, ?, and [. If one of these characters appears, then the word is regarded as a pattern, and replaced with an alphabetically sorted list of file names matching the pattern.