O problema vai estar escapando de tudo corretamente. Por que você não tenta uma abordagem um pouco diferente assim:
CMD='mysqldump -u"$user" -p"$pass" -h"$host" "$dbase" > "$dbase.sql.dump"';
[ "-d" = "$1" ] && echo $CMD
eval $CMD
O truque é salvar o comando como uma variável e, em seguida, imprimir a variável apenas se você estiver depurando. Isso elimina a necessidade de escrevê-lo duas vezes e você pode usar a variável eval
para executar o comando que ele contém.