msoliver
(usa Debian)
Enviado em 09/10/2016 - 16:19h
marlirodrigues escreveu:
Marcelo se eu fizesse um script com número de 0 a 100 no while para imprimir os pares, dessa forma então estaria correto?
Preciso entender esses detalhes.
#!/bin/bash/
clear
i=0
while [ $i <= 100]; do #Use [ $i -le 100 ] Ou ((i<=100))
if [ $ i %2 ==0] ; faltou o "then" #Use (((i%2)==0))
echo "i"
Faltou o "fi"
i= $[$i +2] #ERRADO
done
Marli, continua ERRADO.....
O erro começa na 1ª LINHA
#!/bin/bash/
Corrigido:
#!/bin/bash
Errado: [ $i <= 100]
Corrigido: [ $i -le 100 ]
Veja:
Opções do comando test ou [
Comparação Numérica
-lt É menor que (LessThan)
-gt É maior que (GreaterThan)
-le É menor igual (LessEqual)
-ge É maior igual (GreaterEqual)
-eq É igual (EQual)
-ne É diferente (NotEqual)
Tudo corrigido: Vai de ZERO a CEM e TESTA cada NúMERO
#!/bin/bash
tput clear
i=0
while [ $i -le 100 ];do
sleep 0.25
if (((i%2)==0));then
echo "$i:PAR"
else
echo "$i:IMPAR"
fi
let i++ #Ou i=$((i+1))
done
O "if . . . then ... else"
Pode ser substituído por:
(((i%2)==0)) && echo "$i:PAR" || echo "$i:IMPAR"
Já que " inicia com ZERO e SOMA 2", sempre será PAR, logo, não é necessário testar. . . .
#!/bin/bash
tput clear
i=0
while [ $i -le 100 ];do
sleep 0.25 #Pode tirar esse "sleep"
i=$((i+2))
echo "i:$i"
done
O mesmo resultado, com o "laço" for . . .
for ((x=0;x<=100;x=$((x+2))));do echo $x;done
Att.:
Marcelo Oliver