Portanto, com bash
há (pelo menos) duas opções.
O primeiro é read -n 5
. Isso pode parecer que atenda às suas necessidades. Da página man
-n nchars
read returns after reading nchars characters rather than
waiting for a complete line of input, but honor a delim-
iter if fewer than nchars characters are read before the
delimiter.
MAS há uma pegadinha aqui. Se o usuário digitar abcde
, então o read
completará sem a necessidade de pressionar RETURN. Isso limita os resultados a 5 caracteres, mas pode não ser uma boa experiência do usuário. As pessoas são usadas para pressionar RETURN.
O segundo método é apenas para testar o comprimento da entrada e reclamar se for muito longo. Usamos o fato de que ${#id}
é o tamanho da string.
Isso resulta em um loop bem normal.
ok=0
while [ $ok = 0 ]
do
echo "Enter the id: "
read id
if [ ${#id} -gt 5 ]
then
echo Too long - 5 characters max
else
ok=1
fi
done
Se você quiser que sejam exatamente 5 caracteres, altere o if
test de -gt
para -eq
.