Verifique esta resposta no SO. Como você está usando a versão 3.00 do bash 3, pode considerar o seu problema. Logo, a partir da versão 3.2, citar o argumento string para o comando [[
do comando =~
força a correspondência de strings, então o padrão correto para o bash 4 deve ser:
$ [[ "20110228" =~ ^[0-9]{8}$ ]] && echo matches
matches