Em bash script também é possível fazer um loop usando o for.
#!/bin/bash
for i in 1 2 3
do
echo $i
done
for i in 1 2 3
do
echo $i
done
Resultado:
1
2
3
2
3
Será feito a ação compreendida entre "do" e "done" para cada valor após o "in" que será armazenado na variável $i. Para fazer um ação em todos os arquivos:
#!/bin/bash
for i in *
do
ls $i
done
for i in *
do
ls $i
done
Para contar de 1 até 100:
#!/bin/bash
for i in `seq 100`
do
echo $i
done
for i in `seq 100`
do
echo $i
done
Vamos supor que você queria descobrir o primeiro endereço ip da rede disponível. Você pode usar o "break" para parar o loop ao primeiro host que responder.
#!/bin/bash
for i in `seq 255`
do
echo -n Testando 172.20.16.$i ...
ping -c 1 172.20.16.$i 2>/dev/null >/dev/null
if [ $? == 0 ]
then
echo "Host encontrado : " 172.20.16.$i
break
else
echo .
fi
done
for i in `seq 255`
do
echo -n Testando 172.20.16.$i ...
ping -c 1 172.20.16.$i 2>/dev/null >/dev/null
if [ $? == 0 ]
then
echo "Host encontrado : " 172.20.16.$i
break
else
echo .
fi
done
Resultado:
Testando 172.20.16.1 ....
Testando 172.20.16.2 ....
Testando 172.20.16.3 ...Host encontrado : 172.20.16.3
Testando 172.20.16.2 ....
Testando 172.20.16.3 ...Host encontrado : 172.20.16.3