I'm answering the question in the subject, not the question at the end of the post about what's wrong with the shell script.
If you are willing to do it outside of a shell script, the mmv command will do it.
file1 file1.out file2
me@elman:~/test$ mmv -n "*" "#1.newsuffix"
file1 -> file1.newsuffix
file1.out -> file1.out.newsuffix
file2 -> file2.newsuffix
The '-n' tells mmv to show what would be done, but not really do it (dry-run). The second argument ("*") tells mmv which files to alter (the source). You can have far more complicated match patterns, but this command should get all the non-hidden files in your directory. In the last argument "#1.newsuffix" (the destination), the #1 refers to the first wild-card match in the source specification and copies it over to the new name.
Remove the '-n' to really do the change. The manpage is very good.