ShellCheck é um bom começo para programação bash. Dá dicas bastante úteis:
Line 6:
if [[ "$CDTRACK" =~ "([[:alpha:][:blank:]]*)- ([[:digit:]]*) - (.*)$" ]]
^-- SC2076: Don't quote rhs of =~, it'll match literally rather than as a regex.
O Regex não pode ser citado assim. Exemplo de trabalho com caracteres especiais com escape (basicamente espaços):
if [[ "$CDTRACK" =~ ([[:alpha:][:blank:]]*)-\ ([[:digit:]]*)\ -\ (.*)$ ]]
ou como glenn jackman proposto, citando apenas os outros personagens (o que parece estranho para pessoas que usam linguagens diferentes, mas também funciona):
if [[ "$CDTRACK" =~ ([[:alpha:][:blank:]]*)"- "([[:digit:]]*)" - "(.*)$ ]]
Oneliner para testar uma string existente:
if [[ "Ludwig van Beethovern - 02 - Adagio un poco mosso.ogg" =~ ([[:alpha:][:blank:]]*)-\ ([[:digit:]]*)\ -\ (.*)$ ]]; then echo "${BASH_REMATCH[2]}"; fi