Neste breve post vamos falar de uma instrução do shell que é muito útil, mas que é muito pouco utilizada pela maioria dos profissionais Linux no dia dia, a instrução for.
A maioria dos profissionais acredita que a instrução “for” só tem utilidade dentro de um shell script, para criar rotinas de loop.
Mas não esqueça que um “shell script” nada mais é do que uma sequência de instruções do shell, normalmente do bash, dessa forma o for pode muito bem ser utilizado fora de um script, para muitas funções.
A Sintaxe do For no Bash Linux
A sintaxe da instrução for normalmente utilizada em um shell script é a seguinte:
do
<comandos>
done
Nessa sintaxe, a variável “valor”, ou qualquer outro nome que for definido, receberá em cada loop o valor obtido através da “<sequencia>”, que pode ser uma sequência de valores ou um comando que gera uma sequência de valores, o que normalmente é o caso.
Entre o “do” e o “done” teremos a sequência de comandos a serem utilizados, normalmente referenciando a variável declarada no for como $valor.
No entanto, a mesma instrução pode ser utilizada diretamente na linha de comando do shell, de duas a formas, a primeira digitando linha a linha, utilizando-se exatamente a mesma sintaxe usada acima:
> do
> comando1
> comando2
> done
A outra opção é criar toda a instrução em uma linha única, o que facilita muito para copiar e colar o comando, criar um alias e etc. Nesse caso a sintaxe é a seguinte:
Note que, simplesmente pelo comando estar todo em uma mesma linha, utilizamos o sinal do “;” após a <sequencia> e após cada comando.
A Sequência do Loop For
Quanto à sequência, como disse anteriormente ela pode ser uma sequência explícita de valores ou um comando que gera uma sequência. Alguns exemplos:
- for i in 1 2 3 4 5
- for i in a b c d e
- for i in $(seq 20) – Comando que gera uma sequência de 1 a 20
- for i in $(seq 1 5 50) – Comando que gera uma sequência de 1 a 50 com intervalos de 5 em 5
- for i in {1..20} – Esse formato também pode ser utilizado para gerar uma sequência de 1 a 20
- for i in {1..50..5} – Esse formato também gera uma sequência de 1 a 50 com intervalos de 5 em 5
- for i in * – A variável “i” vai receber todos os arquivos e diretórios do diretório atual
Exemplos de Uso do For diretamente no Bash
Agora que você já sabe como usar a instrução for diretamente no shell do Linux, vamos ver alguns exemplos de como isso é útil.
Por exemplo, imagine que você tem um arquivo texto, com uma lista de usuários do sistema, e você deseja copiar o arquivo instrucoes.txt para o home de cada um deles, e ainda forçar que esses usuários troquem suas senhas no próximo login. A instrução seria a seguinte:
Outro exemplo, você deseja alterar o nome de todos os arquivos com a extensão “.out” para “.out-backup”. Use o comando:
Um outro exemplo, enviar o arquivo instrucoes.txt via scp para o usuario suporte dos IPs de 10.0.0.100 a 10.0.0.120:
> do
> scp instrucoes.txt suporte@10.0.0.$ip:~/
> done
E assim vai, as possibilidades são inúmeras e realmente ajuda muito no dia a dia de um administrador ou analista de sistemas.
Leave a Comment