As such, you need a space after it. ] is added for balance - you need a space before that, too.
while [ $# -gt 0 ]
do
echo Moving file "$1"
shift
done
exit 0
$0 is the script name... $1 will be the first argument - each time - after shift, what was $2 will be $1. You should quote arguments to protect against spaces, etc. In your echo example, not an issue, but if you plan to mv the file, it's good practice to quote variables.
There's no need to add semi-colons after commands if it's the last command on the line.