if dentro to loop for [RESOLVIDO]

1. if dentro to loop for [RESOLVIDO]

Ricardo Neves
ricardo.ron

(usa Debian)

Enviado em 25/04/2020 - 12:06h


boa tarde pessoal

Dentro de um loop for como faço um if e volto para o loop na mesma posição ?. Ex dentro do loop tem um case caso digite Y|N em minúsculo como volto para o LOOP na mesma posicao. Para digitar correto.


_corrigir(){
contar=$( echo $corrigir | fgrep -o + | wc -l)
contar=$(( contar + 1 ))
echo "\n\n"
for var in $( seq 2 "$contar" );
do
ips_corre=$(echo $corrigir | cut -d'+' -f$var )
echo '{TEXTO}33[35;1mAntenas a serem corrigidas {TEXTO}33[m\n'
echo "\t $ips_corre"
# corrigir
echo "\nCORRIGIR AGORA? Y/N\n "
read decisao
case $decisao in
Y)
#sshpass -p $pw ssh -o StrictHostKeyChecking=no $user@$corrigir 'interface wireless connect-list set area-prefix="$prefixo_ok" numbers=0'
sshpass -p $pw ssh -o StrictHostKeyChecking=no $user@$ips_corre 'ip address print'
;;
N)
;;
n|y)
echo "\n\tFavor digite maiusculo"

;;

*)
echo "\n\t So aceita Y ou N "
echo "variavel * var=$var"
;;
esac


done
}





  


2. Re: if dentro to loop for

Paulo
paulo1205

(usa Ubuntu)

Enviado em 25/04/2020 - 21:55h

Só com o for não dá para fazer. Você vai ter de fazer um outro nível de laço de repetição mais interno. Veja o exemplo abaixo.
for item in "${lista_de_itens[@]}"; do
while : ; do
read -p "Executa comando para o item ${item}? (responda 'Y' ou 'N'): " opcao
case "$opcao" in
Y)
executa_comando "$item"
break # Este 'break' para o while, não o for.
;;
N)
break # Idem.
;;
y|n)
echo "Você tem de digitar 'Y' ou 'N' usando letras maiúsculas." >&2
;;
*)
echo "Resposta inválida." >&2
;;
esac
done
done



... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)


3. Re: if dentro to loop for [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 25/04/2020 - 22:00h


ricardo.ron escreveu:


boa tarde pessoal

Dentro de um loop for como faço um if e volto para o loop na mesma posição ?. Ex dentro do loop tem um case caso digite Y|N em minúsculo como volto para o LOOP na mesma posicao. Para digitar correto.


_corrigir(){
contar=$( echo $corrigir | fgrep -o + | wc -l)
contar=$(( contar + 1 ))
echo "\n\n"
for var in $( seq 2 "$contar" );
do
ips_corre=$(echo $corrigir | cut -d'+' -f$var )
echo '{TEXTO}33[35;1mAntenas a serem corrigidas {TEXTO}33[m\n'
echo "\t $ips_corre"
# corrigir
echo "\nCORRIGIR AGORA? Y/N\n "
read decisao
case $decisao in
Y)
#sshpass -p $pw ssh -o StrictHostKeyChecking=no $user@$corrigir 'interface wireless connect-list set area-prefix="$prefixo_ok" numbers=0'
sshpass -p $pw ssh -o StrictHostKeyChecking=no $user@$ips_corre 'ip address print'
;;
N)
;;
n|y)
echo "\n\tFavor digite maiusculo"

;;

*)
echo "\n\t So aceita Y ou N "
echo "variavel * var=$var"
;;
esac


done
}


Segue sugestão.
Note que é aceito "SsNn".
#/bin/bash
clear;
for((n=0;n<=20;n++));do
read -p "Count: $n Corrigir Agora? ([Ss]|[Nn]):" -n1 RESP;
if [[ $RESP =~ ^(S|s)$ ]];then
echo -e "\nCount:: $n => Corrija\nLaço interrompido\n";
break;
elif [[ $RESP =~ ^(N|n)$ ]];then
echo -e "\nCount: $n => Não será corrigido\nO laço Segue...\n";
# continue; #Nem é necessário......
fi
done

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






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts