"exec" just does a system exec() call, in other words it runs the given program with the given list of arguments. It doesn't run a shell. Things like "for" are shell commands. You may be a bit confused because the shells you're used to try to run commands as a program if they're not recognized as part of the shell's syntax.
So ... what you need to do is to exec a shell of your choice (bash, sh, csh, etc) and pass the proper arguments to it.