The stuff you type into the terminal window is getting interpreted by the shell interactively (as you type it, after you hit the enter key). You may not've ever tried it, but you can do loops in terminal window. Try:
$ for i in `ls`
> do
> echo "found this: $i"
> done
(You don't type the '>' characters -- they'll show up automatically.)
So, one difference is, a shell script could be typed in one line at a time in a terminal window, and it would work. Python has this same sort of interactive "shell". Perl's interpreter isn't really interactive like that (though it does offer the -e option for making "one-liners").