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