A mensagem de erro sugere que você não está realmente executando o script usando bash .
Torne o script executável e adicione uma #! -line adequada na primeira linha do script, por exemplo,
#!/bin/bash
Ou execute o script com bash explicitamente:
$ bash script.sh
Você deve tratar sh e bash como implementando idiomas separados e usar o intérprete correto para o script que está escrevendo. Nesse caso, você está usando read com a opção -u . Esta é originalmente uma extensão ksh da especificação read padrão e também é implementada em bash e zsh . Portanto, você precisa executar o script com bash , zsh ou ksh .
Como saber quando usar sh e quando usar bash ou algum outro shell? É simples, você aprende a maneira como o sh funciona e que outros recursos outros shells adicionam.