#The ^M is a carriage return character. Linux uses the line feed character to mark the end of a line, whereas Windows uses the two-character sequence CR LF. Your file has Windows line endings, which is confusing Linux.
#remove the cariage character
sed -i -e 's/
$//' NAME-OF-FILE.sh