Comprimento máximo do caractere para o comando Read (entrada)

1

Eu tenho scripts bash com comandos de entrada.

echo "Enter the id: " 
read id

Gostaria de saber se há uma maneira de limitar o caractere que posso inserir no para id . Por exemplo, ele só pode digitar 5 caracteres para id .

isso é possível?

Obrigado.

    
por Edmhar 04.08.2016 / 03:49

1 resposta

3

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 .

    
por 04.08.2016 / 04:15