Como controlar a quantidade de caracteres que o usuario pode digitar [RESOLVIDO]

1. Como controlar a quantidade de caracteres que o usuario pode digitar [RESOLVIDO]

Matheus Rodrigues de Carvalho
matheusrsp

(usa Ubuntu)

Enviado em 19/11/2021 - 16:14h

Boa Tarde !!!

Estou fazendo um script e ao longo do caminho me deparei com a seguinte duvida como controlar a quantidade de caracteres que o usuario pode digitar, pesquisando sobre o assunto, o mais próximo que eu consegui chegar da resposta foi com o comando read -n (parametro que controla a quantidade de caracteres que o usuario pode digitar), porem ainda não obtive o resultado desejado, pois quando o read -n1 é executado no script ele segue adiante para o próximo comando do script, mas na verdade eu quero que o usuario possa escolher apenas um caractere EX: 1 ou 2 ou 3 etc.., e que ele pressione enter para seguir para a próxima ação do script, não quero que ao colocar 1 por exemplo o script ja pule para próxima ação, quero que o script aguarde o enter do usuario. Tentei ser o mais claro possivel em relação ao problema.

Alguem sabe uma maneira viavel de fazer isto ?

Abaixo esta anexada a imagem de um trecho de código que eu fiz para exemplificar a sitiuação.

Desde ja Agradeço pela ajuda !!!


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 21/11/2021 - 19:32h

matheusrsp escreveu:
Testei algumas coisas aqui, o mais próximo que eu cheguei do resultado que eu queria é este, só que agora eu tenho que capturar o enter do usuario para pular para a próxima ação.


Boa noite matheusrsp.
Veja se ajuda:
#!/usr/bin/env bash

yc="\e[1;33m";fc="\e[m";rc="\e[1;38m";
pos="$(($(tput cols)/2-11))";

cl(){ printf '\x1bc';}
cl

while [ "$opcao" == '' ];do
printf "${yc}\e[2;${pos}f••• MENU PRINCIPAL •••${fc}\n"; #Imprime o texto Sempre centralizado#
printf " Opção [%s]\n" {1..3};printf "\n Digite a sua Opção: ${fc}"; #Altere a qtdd de opções, de acordo com a necessidade....
read -s -n1 -t1 key;
[[ -n "$key" && "$key" =~ [1-3] ]] && { opcao="$key";cl;} #Se alterar a qtdd, altere aqui também - Casa só as opções válidas#
done

while [ "$enter" != $'\x0a' ];do #Valida o [Enter]
printf "${yc}\e[2;${pos}f••• PRESSIONE [ENTER] •••${fc}\n";
read -s -N1 -t1 enter;
done

cl;
case $opcao in
1) echo "Comandos Opção [01]";;
2) echo "Comandos Opção [02]";;
3) echo "Comandos Opção [03]";;
esac
printf "%$((($(tput cols)-43)/2 ))s${rc}• Pressione qualquer tecla para finalizar •${fc}\n";
read -n1 && cl


Obs.:
O 1º looping, espera pela opção válida, no exemplo coloquei de 1 a 3.....
Se digitado uma dessas opções, encerra esse looping, e inicia o
Looping do ENTER, que, só é encerrado se for pressionado Enter!
O final é um case .....
E uma mensagem para Finalizar.

É isso.
______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________


3. Re: Como controlar a quantidade de caracteres que o usuario pode digitar [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 19/11/2021 - 19:15h

Sugestão:

PS3=$'\nDigite aqui a sua Opção : '
select opcao in $(echo {1..9});do break;done
case $opcao in
1) comando;;
2) comando;;
.
.
.
*) echo "Opção inválida";;
esac




______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________



4. Como controlar a quantidade de caracteres que o usuario pode digitar

Matheus Rodrigues de Carvalho
matheusrsp

(usa Ubuntu)

Enviado em 20/11/2021 - 14:24h

Eu executei aqui somente alterei a parte dos comandos, não funcionou. Tambem não conseguir entender a sintaxe do select, nunca tinha visto este comando.

Abaixo anexei o resultado da tentativa.

Mesmo assim o usuario consegue digitar mais de um caractere.






5. Como controlar a quantidade de caracteres que o usuario pode digitar

Matheus Rodrigues de Carvalho
matheusrsp

(usa Ubuntu)

Enviado em 20/11/2021 - 15:18h

Testei algumas coisas aqui, o mais próximo que eu cheguei do resultado que eu queria é este, só que agora eu tenho que capturar o enter do usuario para pular para a próxima ação.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts