Linux automatizar tarefas loop while

GNU/Linux entenda o loop while

Como uso o bash while loop para repetir tarefas específicas no sistema operacional Linux/UNIX? Como definir loops infinitos usando a instrução while? Você pode me fornecer os exemplos de loop while? O loop bash while é uma instrução de fluxo de controle que permite que códigos ou comandos sejam executados repetidamente com base em uma determinada condição. Por exemplo, execute o comando echo 5 vezes ou leia o arquivo de texto linha por linha ou avalie as opções passadas na linha de comando para um script. Bash enquanto sintaxe de loop? A sintaxe é a seguinte:

while [ condition ]
do
command1
command2
command3
done

command1 até command3 será executado repetidamente até que a condição seja verdadeira. O argumento para um loop while pode ser qualquer expressão booleana. Loops infinitos ocorrem quando a condicional nunca é avaliada como falsa. Aqui está a sintaxe de uma linha do loop while:

1) while [ condition ]; do commands; done

2) while control-command; do COMMANDS; done

Por exemplo, o seguinte while loop será impresso 5 vezes bem-vindo na tela:

#!/bin/bash

x=1

while [ $x -le 5 ]
do
echo “Welcome $x times”
x=$(( $x + 1 ))
done

ALTERANDO O EXEMPLO PARA TAREFAS ROTINEIRAS.

#!/usr/bin/env bash

x=1

while [ $x -le 1 ]
do
echo ‘Listando’
ls -l
echo ‘Onde estamos no sistema?’
pwd
x=$(( $x + 1 ))
done

Podemos usar os loops para tarefas muito simples e comuns no nosso dia a dia, assim como um conjunto de comandos mais complexos que temos de executar rotineiramente. Porque não guardar estes comandos em um shell script e deixar o computador fazer por nós o que instruímos a fazer? A máquina executa meus scripts e só. Veja este exemplo abaixo.

Executo no meu terminal:

x=1 ; while [ $x -le 1 ]; do echo; echo ‘Listando’; echo ; ls -l ; echo ; echo ‘Onde estamos no sistema?’; pwd; echo; x=$(( $x + 1 )); done

alias exloopwhile=’echo ; echo “x=1 ; while [ $x -le 1 ]; do echo; echo “Listando”; echo ; ls -l ; echo ; echo “Onde estamos no sistema?”; pwd; echo; x=$(( $x + 1 )); done” ; echo’

Resultado:

~:$ x=1 ; while [ $x -le 1 ]; do echo ; echo ‘Listando’; ls -l ; echo ; echo ‘Onde estamos no sistema?’; pwd; echo; x=$(( $x + 1 )); done

Listando

total 146
drwxr-xr-x 3 user user 4096 mar 29 04:52 ‘Área de trabalho’/
drwxr-xr-x 29 user user 159744 mar 31 04:03 bin/
drwxr-xr-x 8 user user 4096 mar 27 07:25 Documentos/
drwxr-xr-x 5 user user 4096 mar 31 04:21 Downloads/
drwxr-xr-x 6 user user 4096 mar 22 15:15 Imagens/
drwxr-xr-x 2 user user 4096 fev 20 18:48 Modelos/
drwxr-xr-x 3 user user 4096 mar 21 05:56 Música/
drwxr-xr-x 2 user user 4096 fev 20 18:48 Público/
drwxr-xr-x 3 user user 4096 mar 28 13:06 Vídeos/

Onde estamos no sistema?
/home/user

~:$

Linux shell script loop for para gatinhos

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”