—
Pode ser divertido mas o loop for também é útil. Veja só uns exemplos:
—
Abra o terminal e execute:
for n in 1 2 3 4 5; do pwd; done;
OBS:
Este é um exemplo simples de loop for. Este loop executa o comando pwd cinco vezes. Poderia ser um Hello World!. Poderia ser um ou vários comandos. Exemplo:
for gato in 1 2 3 4 5; do echo “Hello World!”; done;
—
Resultado:
~:$ for gato in 1 2 3 4 5; do echo “Hello World!”; done;
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
~:$
—
Como fazer um loop entre um ponto inicial e final – O problema com esse script loop.sh é que, se você deseja processar uma lista maior (por exemplo, 1 a 500), levaria anos para digitar todos os números. Em vez disso, especifique um ponto inicial e final:
for gata in {1..10}; do echo “$gata “; done
OU:
for numero in {1..10}; do echo “$numero “; done
OU:
for gatinhos in {1..10}; do echo “$gatinhos “; done
—
LOOP FOR PARA GATINHOS(AS)
for gatinhos in {1..10}; do echo “$gatinhos “; done
—
Exemplo gatinhos:
~:$ for gatinhos in {1..10}; do echo “$gatinhos “; done
1
2
3
4
5
6
7
8
9
10
~:$
—
O loop acima em shell script:
—
#!/usr/bin/env bash
for gatinhos in {1..10}
do
echo “$gatinhos ”
done
exit 0
# fim do script
—
Como pular números em um intervalo – O exemplo anterior mostrou como fazer um loop entre um ponto inicial e final. Veja como pular números no intervalo. Por exemplo, para fazer um loop entre 0 e 100, mas mostrar apenas cada décimo número, use o seguinte script para obter esta saída:
for numero in {0..100..10}; do echo “$numero “; done
—
Resultado:
~:$ for numero in {0..100..10}; do echo “$numero “; done
0
10
20
30
40
50
60
70
80
90
100
~:$
—
Este exemplo acima em shell script:
—
#!/usr/bin/env bash
for gato in {0..100..10}
do
echo “$gato ”
done
exit 0
# fim do script
—
As regras são as mesmas. Há uma lista, uma variável e um conjunto de instruções a serem executadas entre do e done. A lista desta vez é assim: {0..100..10}. O primeiro número é 0 e o número final é 100. O terceiro número (10) é o número de itens na lista que serão ignorados.
—
Um exemplo prático – para loops, faça mais do que repetir listas de números. Por exemplo, use a saída de outros comandos como a lista. O exemplo a seguir mostra como converter arquivos de áudio de MP3 para WAV:
#!/usr/bin/env bash
for f in ./*.mp3
do
mpg -w ./wavs/”${f}”.wav “$f”
done
—
A lista neste exemplo é todo arquivo com a extensão .MP3 na pasta atual e a variável é um arquivo. O comando mpg converte o arquivo MP3 em WAV. No entanto, você provavelmente precisará instalar esta ferramenta usando um gerenciador de pacotes primeiro.
—
PARA CONVERTER mp3 para ogg:
—
#!/usr/bin/env bash
for f in *.mp3
do ffmpeg -i “${f}” “${f/%mp3/ogg}”
done
# fim do script
—
OBS:
As aspas duplas impedem que espaços nos nomes de arquivos sejam tratados como ‘novas linhas’.
—
O loop while dizendo Bem-Vindo(a). Executo esta linha abaixo no terminal:
n=1; while [ $n -le 5 ]; do echo “Bem-Vindo(a); $n vezes.”; n=$(( n+1 )); done
—
LOOP WHILE PARA GATO
—
E para gato? Loop while para gato? Sim tem aqui! Veja:
gato=1; while [ $gato -le 5 ]; do echo “Bem-Vindo(a); $gato vezes.”; gato=$(( gato+1 )); done
—
~:$ gato=1; while [ $gato -le 5 ]; do echo “Bem-Vindo(a); $gato vezes.”; gato=$(( gato+1 )); done
Bem-Vindo(a); 1 vezes.
Bem-Vindo(a); 2 vezes.
Bem-Vindo(a); 3 vezes.
Bem-Vindo(a); 4 vezes.
Bem-Vindo(a); 5 vezes.
—
Exemplo:
~:$ n=1; while [ $n -le 5 ]; do echo “Bem-Vindo(a); $n vezes.”; n=$(( n+1 )); done
Bem-Vindo(a); 1 vezes.
Bem-Vindo(a); 2 vezes.
Bem-Vindo(a); 3 vezes.
Bem-Vindo(a); 4 vezes.
Bem-Vindo(a); 5 vezes.
~:$
—
#!/usr/bin/env bash
for ALGO in ~/Documentos; do
ls -lah “$ALGO”
done
for ONDE in ~/; do
find “$ONDE” -empty > vazios.txt
done
# buscará arquivos e pastas vazios
# escreverá a saida em vazios.txt
—
#!/bin/bash
#
#Nome: metadataMKV.sh
#Objetivo: conferir metadata de arquivo mkv?
#
for gato in *.mkv; do
exiftool “$gato”
done
—
#!/bin/bash
#Nome: mKvRmMtdta.sh
#Objetivo: remover metadata
#de arquivos mkv de uma pasta
for gato in *.mkv; do
mkvpropedit “$gato” –tags all:
done
—
#!/bin/bash
#Nome: bkpTrabalhos.sh
#Objetivo: backup
SRCDIR=”~/Documentos/Trabalhos/”
DESTDIR=”~/Backups/”
NOMEARQUIVO=ug-$(date +%-d%-m%-Y)-$(date +%-T).tgz
tar –create –gzip –file=$DESTDIR$NOMEARQUIVO $SRCDIR
—
LINUX BASH SHELL SCRIPT LOOP FOR EXEMPLOS
—1
LOOK FOR SINTAXE:
for VARIAVEL in 1 2 3 4 5 .. N
do
comando1
comando2
comandoN
done
—2
for VARIAVEL in file1 file2 file3
do
comando1 na $VARIAVEL
comando2
comandoN
done
—3
for SAIDA in $(AQUI-COMANDO-LINUX)
do
comando1 na $SAIDA
comando2 na $SAIDA
comandoN
done
—
SHELL SCRIPT LOOP FOR EXEMPLOS
—
OBS:
Esse tipo de loop for é caracterizado pela contagem.
O intervalo é especificado por um número inicial e final (nº 5).
O loop for executa uma sequência de comandos para cada membro em uma lista de itens.
Uns exemplos representativo em bash shell script abaixo.
Eles exibem a mensagem de boas-vindas (Bem-vindo) 5 vezes com o loop for.
—1
#!/bin/bash
for i in 1 2 3 4 5
do
echo “Bem-vindo $i vezes”
done
—2
#!/bin/bash
for i in {1..5}
do
echo “Bem-vindo $i vezes”
done
—3
#!/bin/bash
echo “Bash version ${BASH_VERSION}…”
for i in {0..10..2}
do
echo “Bem-vindo $i vezes”
done
—
Podemos colocar todos estes loops acima em um único bash shell script e executa-lo.
Veja abaixo:
—
#!/usr/bin/env bash
#
# Autor: claytu_dynamitti_1000%
# Nome: eXempLoopFor.sh
# Versão: 0.0 ForeverNow
#
###################
for i in 1 2 3 4 5
do
echo “Bem-vindo $i vezes”
done
for i in {1..5}
do
echo “Bem-vindo $i vezes”
done
echo “Bash version ${BASH_VERSION}…”
for i in {0..10..2}
do
echo “Bem-vindo $i vezes”
done
—
#!/usr/bin/env bash
###################
# Autor: claytu
# Nome: 3eXempLoopFor.sh
# Versão: 0.1.1 ForeverNow
# OBS: Mais didático ao executar?
###################
clear
echo “Esse tipo de loop for é caracterizado pela contagem.”
sleep 3
echo “O intervalo é especificado por um número inicial e final (número 5).”
sleep 3
echo “O loop for executa uma sequência de comandos para cada membro em uma lista de itens.”
sleep 7
echo “Uns exemplos representativos no shell script bem abaixo.”
sleep 3
echo “Eles exibem a mensagem de boas-vindas (Bem-vindo) 5 vezes com o loop for.”
sleep 5
echo “Vai começar…”
echo “”
sleep 6
for i in 1 2 3 4 5
do
echo “Bem-vindo! $i vezes”
done
echo “”
echo “Foi o loop for 1.”
echo “”
sleep 3
for i in {1..5}
do
echo “Bem-vindo! $i vezes”
done
echo “”
echo “Foi o loop for 2.”
echo “”
sleep 3
echo “Bash version! ${BASH_VERSION}…”
for i in {0..10..2}
do
echo “Bem-vindo! $i vezes”
done
echo “”
echo “Foi o loop for 3.”
echo “”
sleep 3
echo “Percebeu? Entendeu? Pegou a manha? Nem eu.”
echo “”
sleep 2
clear
echo “De novo?”
echo “”
—
#!/bin/bash
#Nome: BkpData.sh
#Objetivo: backup
mkdir -pv ~/Documentos/backp_textos/
echo ”
pwd
sleep 2
echo ”
echo -e “Os arquivos abaixo terão backup:\n”
ls ~/Documentos/*.txt
sleep 3
echo -e “\n\nTamanho dos arquivos de backup:\n\n”
du -sh ~/Documentos/*.txt
sleep 3
echo ”
#—————————–#
read -r -p “Deseja continuar? [s/N] ” response
case “$response” in
[yY][eE][sS]|[yY])
true
;;
*)
false
;;
esac
#—————————–#
cd ~/Documentos/ #isto é necessário?
#—————————–#
for txtfile in ~/Documentos/*.txt; do
cp “$txtfile” ~/Documentos/backp_textos/
done
#—————————–#
echo -e “\nListando arquivos de backup com o comando: \n\nls -t ~/Documentos/backp_textos/*.txt\n”
ls -t ~/Documentos/backp_textos/*.txt
sleep 3
echo -e “\n\nOs arquivos .txt foram copiados para ~/Documentos/backp_textos/?\n\nOk, até breve.\n”
—