Use backticks em vez de aspas.
dbnya='echo $(date +%Y%m%d%H%M%S)'
O backtick (') indica que o texto deve ser executado como um comando, definindo a variável para a saída do comando.
para a variável
dbnya="echo $(date +%Y%m%d%H%M%S)"
Ao executar o código abaixo, recebo um erro (erro de sintaxe SQL)
mysql -u root -pthepass -e "CREATE DATABASE demo$dbnya CHARACTER SET utf8 COLLATE utf8_bin"
O segundo comando funcionará se eu estiver usando dbnya=20120423230524
como primeiro comando
Você não precisa usar o comando echo:
$> dbnya="echo $(date +%Y%m%d%H%M%S)"
$> echo $dbnya
echo 20120423170042
Basta removê-lo do comando, dbnya receberá o resultado da avaliação da data:
$> dbnya="$(date +%Y%m%d%H%M%S)"
$> echo $dbnya
20120423170114