O erro está nas linhas em que você incrementa COUNTER . O símbolo $ é usado quando você quer cancelar a referência do nome de uma variável para obter seu valor. Não é usado quando você atribui um valor à variável. Essas linhas devem ler:
COUNTER=$(( $COUNTER + 1 ))
e
COUNTER=0
Além disso, como o comando case está dentro do loop while , suponho que você queira avisar o usuário novamente se ele inserir um valor inválido. Se for assim, você também deve colocar a instrução read dentro do loop while .