O código logo abaixo é um trecho editado de um projeto que eu estou desenvolvendo. Eu montei um "sisteminha" usando while e read para que cada caractere digitado pelo usuário seja verificado e que se caso for um caractere divergente do que é solicitado seja retornada uma mensagem de erro.
Como os caracteres são verificados um por vez, se eu colocar um break dentro do if abaixo de um else, o loop encerra e o valor da variável _USER será apenas o primeiro caractere digitado pelo usuário, sendo assim, não tem como o usuário terminar de digitar o que ele quer...
Alguém poderia me dá uma ajuda de como eu poderia finalizar o loop pressionando a tecla ENTER ou algo semelhante? Ou uma outra forma?
#!/bin/bash
clear
tput civis
while :; do
tput cup 1
read -p "Nome de usuário: " -n"$[${#_USER} + 1]" -e -i "$_USER" _USER
if echo "$_USER" | grep -q '[^a-z A-Z 0-9 ._-]'; then
tput cup 1 40
echo "Não foi possível criar o usuário!"
continue
fi
done