And now you can put this all over your scripts to very easily implement dry-run behavior without any quoting worries. Note that you can't invoke aliases this way.
cmd echo "don't worry about quoting"
cmd do_something_dangerous "$scary_arg" "$scary_arg2"
The printf version will give you automatic quoting making copy'n'paste really easy to test. It' also mixes well w/ a verbose option for "--verbose" or such.
I use this all the time (I call it $EXEC instead), and have gotten into the habit of starting all my scripts with EXEC=echo and put it on every command that does any file changes. It has saved my bacon many times.
It doesn't work all the time as the previous poster noted, but it is very low friction which is especially important when writing quick throw-away scripts.