Dada uma variável foo="bar.baz" , a sintaxe correta para remover .baz é ${foo%.*} :
$ foo="bar.baz"
$ echo ${foo%.*}
bar
Remova o $ extra e ele deve funcionar como esperado:
$ fileName="test.tmp"
$ echo ${fileName%.*}.err
test.err