Bash: Random "?" appended to a started screen's name
===

I currently have a case statement in bash that looks like so:

    restart)
        if kill -0 PID; then
            while kill -0 PID; do
                //exit script
            done
            screen -dmS screen1^M
            screen -S screen1 -p 0 -X stuff '//code here'^M
        else
            //other stuff
        fi
        ;;

When I use this script, the screen meant to be started as `screen1` starts as `screen1?` instead. What is the cause of this, and how would I fix it?