quinta-feira, 12 de maio de 2016

Fazendo loop com While shell script



-


O que são os laços while e do ... while?
A palavra while em inglês significa enquanto e a expressão do ... while significa faça ... enquanto. O laço while é uma estrutura de controle de fluxo que permite que um conjunto de instruções seja executado enquanto uma condição estiver satisfeita. É também comum que seja dito que os laços while e do ... while são instruções de loop (comumente traduzidos para o português como laço). O laço do ... while é, assim como o laço while, uma estrutura de controle de fluxo, que será executado uma vez e depois será executado enquanto uma condição for verdadeira. Portanto a diferença entre o laço while e o laço do ... while é que o laço do ... while é sempre executado ao menos uma vez, enquanto que o laço while pode não ser executado nenhuma vez, caso a condição de controle de sua execução não seja satisfeita na primeira passagem do processador por esse laço. A sintaxe do laço while é:
while ( condição de execução )
{
/* Instruções a serem executadas */
}
A sintaxe do laço do ... while é:
do
{
/* Instruções que serão executadas ao menos uma vez */
}
while ( condição de execução );
O laço while e utilizado quando um determinado conjunto de instruções deve ser executado um número indeterminado de vezes, mas somente até uma certa condição ocorrer. O laço do ... while é utilizado quando há um conjunto de instruções a ser executado um número indeterminado de vezes, mas no caso em que esse conjunto de instruções deve ser executado ao menos uma vez, necessariamente.
Estava com problema no while achei esse site que explica.
Toda o texto acima é de fonte do site acima.

Só que mesmo assim não entendi muito bem,
Depois de quebrar muito a cabeça consegui fazer o script do jeito que eu queria, fazendo o while repertir a funçao 3 vezes se for negativa

Segue a estrutura usada.
#!/bin/sh
clear
echo "Subistituindo arquivos"
CONTADOR=1
while [ $CONTADOR -le 3 ]; do
echo "Qual o arquivo de origem ? "
read arquivo
test -z $arquivo
if [ $? = 0 ]
then
echo "Digite um nome de arquivo válido"
echo "Depois de tres vezes digitado errado o script se fechará"
CONTADOR=`expr $CONTADOR + 1`
sleep 2
clear
if [ $CONTADOR -ge 4 ]
then
echo "Você não digitou um arquivo valido por mais de 3 vezes"
echo "O script sera fechado"
sleep 2
clear
exit
fi
else
CONTADOR=10
echo "Você digitou um comando válido"
clear
fi
done
TESTADOR=0
until [ $TESTADOR = 3 ]
do
echo "Qual o nome do destino do arquivo? "
read destino
test -z $destino
if [ $? = 0 ]
then
echo "Digite o nome do arquivo de destino Valido"
echo "Se digitar mais de 3 vezes errados o programa fechará"
TESTADOR=`expr $TESTADOR + 1`
sleep 2
clear
if [ $TESTADOR = 3 ]
then
echo "Você errou mais de 3 vezes"
echo "O script sera fechado"
echo ">>>>>>>>>>>>>>>>>>>>>"
sleep 2
exit
fi
else
TESTADOR=3
echo "ok"
sleep 1
clear
fi
done

0 comentários:

Postar um comentário

# Compartilhar