for e in dbname:dbuser:outputfile ; do
        # Strip the longest left match
        # Strip the longest right match
        # Strip the shortest right match
        # Strip the longest left match.
        # Presto, cleaned up variables.
        O=${e##*:*:}
        D=${e%%:*:*}
        U=${e%:*}
        U=${U##*:}
        pg_dump -f -d -U $U $D > $O
done

Isn’t line noise neat?