Let's consider the following example (from the start of a psql script):
\c :db_to_run_on
TRUNCATE the_most_important_table;
-- tried to avoid similarities to anything that exists out there
Now if it is run this by the command
psql [connection details] -v db_to_run_on=\'dev_database\'
then it just runs and the user is happy. But what if (s)he decides to specify -v db_to_run_on=production_database? (Let's assume that this can happen, just like people run rm -rf / # don't try this at home!!! ocassionally.) Hopefully there is a fresh backup of that table...
So the question arises: how to check the variables passed to a script and stop further processing based on their value?

psqlis quite limited as a batch tool, as it lacks control structures. I'd recommend writing scripts for this sort of thing in perl/python/whatever using the appropriate database driver. – Craig Ringer Sep 19 '12 at 10:59