Por que não se repete 3x como é dito para ser feito? [RESOLVIDO]

1. Por que não se repete 3x como é dito para ser feito? [RESOLVIDO]

Thiago Boeira
tcboeira

(usa Debian)

Enviado em 25/03/2020 - 08:50h

Inicialmente, Bom Dia
Este Script deveria mas não esta repetindo 3x em caso de erro como é dito para ser feito?
Alguem pode me explicar a razão?

#!/bin/bash

NAME () {
echo "Digite seu nome"
echo ""
read NOME
}

NAME

if [ -z $NOME ]
then
echo "Você não digitou seu nome!"
else
echo "Olá" "$NOME"
fi



if [ $NOME != Thiago ]
then
echo "ERRADO"

for i in $(seq 3); do
NAME
if [ $NOME != Thiago ]; then
NAME
break
else
echo "ERRO persiste. Então decide o que fazer?"
break
fi
done



else
echo "Certo"
fi


  


2. MELHOR RESPOSTA

Adriano Siqueira
adrisiq

(usa KDE Neon)

Enviado em 25/03/2020 - 10:53h

O comando seq está errado, você precisa informar o valor de início e de fim:
#!/usr/bin/env bash

function pegarNome() {
local _nome=

while [[ -z "$_nome" ]]; do
read -p "Digite seu nome: " _nome
echo "$_nome"
done
}

_nome=
_tentativas=3

while [[ $_tentativas -gt 0 ]]; do
_nome="$(pegarNome)"

if [[ "$_nome" == "Thiago" ]]; then
break
else
echo "[ E ]: Nome incorreto."
((_tentativas--))
fi
done

if [[ $_tentativas -gt 0 ]]; then
echo "[ I ]: Bem vindo $_nome"
else
echo "[ E ]: Acesso negado."
fi


3. Re: Por que não se repete 3x como é dito para ser feito? [RESOLVIDO]

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 25/03/2020 - 10:25h

Esse loop "for" aí não faz sentido!

Experimenta assim:
#!/bin/bash

while read -p "Digite seu nome: " NOME
do
case $NOME in
Thiago) echo "Nome correto" ; break ;;
*) echo "Nome ERRADO" ;;
esac
done



4. Re: Por que não se repete 3x como é dito para ser feito? [RESOLVIDO]

Thiago Boeira
tcboeira

(usa Debian)

Enviado em 25/03/2020 - 10:33h

Obrigado Ryuk ...
É que faz parte de um conjunto de Scripts... Notei que ele não estava repetindo um número de vezes pedido ...

A sua solução é muito boa... mas preciso que ele tente ao menos + 3 vezes caso de errado. E dando errado bem ai ele parte para seguir a vida, pulando uma etapa/função que tenha na sequencia do Script....

Abração


5. Re: Por que não se repete 3x como é dito para ser feito? [RESOLVIDO]

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 25/03/2020 - 18:49h

Vê aí, agora com três tentativas:
#!/bin/bash
n=1
while read -p "Digite seu nome: " NOME
do
case $NOME in
paulo) echo "Nome correto" ; break ;;
*) echo "Nome ERRADO" ;;
esac
if [ $n -lt 3 ]; then
let n++
else
break
fi
done




6. Re: Por que não se repete 3x como é dito para ser feito? [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 25/03/2020 - 19:54h


tcboeira escreveu:

Inicialmente, Bom Dia
Este Script deveria mas não esta repetindo 3x em caso de erro como é dito para ser feito?
Alguem pode me explicar a razão?

#!/bin/bash

NAME () {
echo "Digite seu nome"
echo ""
read NOME
}

NAME

if [ -z $NOME ]
then
echo "Você não digitou seu nome!"
else
echo "Olá" "$NOME"
fi



if [ $NOME != Thiago ]
then
echo "ERRADO"

for i in $(seq 3); do
NAME
if [ $NOME != Thiago ]; then
NAME
break
else
echo "ERRO persiste. Então decide o que fazer?"
break
fi
done



else
echo "Certo"
fi

Segue sugestão:
#!/bin/bash
count=0;

while (($count<3));do
read -p "Digite seu nome: " NOME
if [ "$NOME" = "" ];then echo "Tentativa Nº $count Você não digitou seu nome!"
elif [ "$NOME" != "Thiago" ];then echo "Tentativa Nº $count Errado"
elif [ "$NOME" = "Thiago" ];then echo "Tentativa Nº $count Certo";break
fi
let count++;
done
echo -e "\nTentativas Esgotadas"



______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


7. Re: Por que não se repete 3x como é dito para ser feito? [RESOLVIDO]

Thiago Boeira
tcboeira

(usa Debian)

Enviado em 09/04/2020 - 20:36h

Muito Obrigado gente... O trabalho esta ficando muito bacana ... Sempre que falo dele, comento que se não fosse as comunidades, sobre tudo aqui do VoL isso não seria possivel!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts