quinta-feira, 19 de dezembro de 2013

Loop for em Bash

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 



Resultado:

1
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

Para contar de 1 até 100:

#!/bin/bash
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

Resultado:

Testando 172.20.16.1 ....
Testando 172.20.16.2 ....
Testando 172.20.16.3 ...Host encontrado :  172.20.16.3