30 exemplos de loops Bash

três tipos de loops são usados em bash para vários fins. Estes são para, Enquanto e até loops. Os diferentes usos destes loops são explicados usando 30 exemplos diferentes neste artigo.

usos de loops Bash:

  1. usando para o loop para ler itens em uma lista
  2. usando para o loop para ler um array
  3. usando para o loop para ler uma lista de valores de cadeia com espaços
  4. usando para o loop in {START..FINAL..INCREMENT} intervalo
  5. usando para o ciclo em {início..FINAL..INCREMENTO} intervalo indo para trás
  6. Usando o loop for com 3 peças e condição de contador
  7. Usando o loop for com 3 peças e várias condições e ações com vírgula
  8. Usando o Infinito loop for
  9. Usando para o laço com condicional de break e continue
  10. Usando o loop for para ler nomes de arquivos pelo englobamento
  11. Usando o loop for para ler a saída do comando find
  12. Usando o loop for para ler nomes de arquivos de um diretório recursivamente
  13. Usando o loop for para ler nomes de arquivos de um diretório recursivamente com a condição
  14. Executar o loop até que o arquivo existe
  15. Usando o loop for com base na saída do pacote de comando list
  16. Usando o loop for para ler cada linha de um arquivo
  17. Usando o loop for para ler cada linha de um arquivo com base em um condicional correspondem
  18. Usando o loop while com um contador
  19. Usando o loop while, com a entrada do usuário e sair quando seleccionar sair a partir de um menu
  20. a combinação de loops com getopts
  21. Usando até loop com um contador
  22. Terminar até loop com base na entrada do usuário
  23. Utilizando nested loops while
  24. Usando até loop de suspensão/espera para a tarefa de plano de fundo começou no script
  25. Usando o loop while para ler pid do ps de saída que não está terminada
  26. Procurar qualquer seqüência de caracteres em um arquivo usando o loop e sair
  27. Combinando bash com curvatura para avaliar os dados de URL
  28. Leitura de dados de uma porta de envio pelo netcat usando o loop while
  29. ping URL usando o loop
  30. top em Execução no modo em lotes usando um loop e registo de saída

Usando o loop for para ler itens de uma lista

O mais simples o uso de ” for ” loop é ler uma lista de seqüência de caracteres ou dados numéricos. A lista de dados numéricos é iterada usando for-in loop no exemplo seguinte. Aqui, quatro números serão lidos na variável, $n em cada passo do loop e impresso. Crie um ficheiro bash com o seguinte programa e execute a partir do terminal.

#!/bin / bash
# for-in loop to read a list of numbers
for n in 10 11 17 25
do
# Print each number
echo “The number is $n”
done

Output:

Run the script.

$ bash for1.sh

a seguinte saída irá aparecer após a execução do programa.

Go to Top

Using for loop to read an array

Any array variable contains a list of data that can be iterated very easily by using for-in loop. O exemplo a seguir mostra o uso de for-in loop para ler um array de dados de string. Aqui, cada valor de array irá buscar na variável, $language e imprimir uma mensagem baseada na linguagem em cada iteração.

#!/bin / bash
languages=(“Bash PERL Python PHP”)
for language in $languages
do
if
then
echo”$language is a web programming language “
else
echo”$language is a scripting language ”
Fi
done

Output:

Run the script.

$ bash for2.sh

a seguinte saída irá aparecer após a execução do programa.

ir para o topo

usar para o ciclo para ler uma lista de valores de cadeia com espaços

quando uma lista de uma cadeia é lida por ciclo for-in e qualquer valor de cadeia contém espaço, em seguida, os valores divididos em palavras baseadas no espaço se o valor de cadeia não é citado com uma única ou dupla citação. O exemplo a seguir mostra como uma lista de valores de cadeia de caracteres com espaço pode ser lida por for-in loop. Aqui, um valor da lista contém espaço e é impresso com o espaço na saída.

#!/bin / bash
# for-in loop to read list of strings with space
for os in “Ubuntu” Linux Mint “Fedora””CentOS”
do
#Print each string
echo “Operating System – $os”
done

Output:

Run the script.

$ bash for3.sh

aqui, o valor de texto, ‘Linux Mint’ é impresso corretamente.

ir para o topo

usando para laço in {START..FINAL..INCREMENT} range

outra utilização de for-in loop é para ler range array. No exemplo a seguir, um laço for é usado para ler uma gama de dados de 10 a 30 que é incrementada em 5 em cada passo. Em seguida, o script irá imprimir os números no intervalo que são divisíveis por 10.

#!/bin / bash
# ler um intervalo usando para laço
para num em {10..30..5}
fazer
# Verificar se o número é divisível por 10 ou não
if (( $num%10==0 ))
em seguida,
echo “$num é divisível por 10”
fi
done

> Saída:

Executar o script.

$ bash for4.sh

a seguinte saída irá aparecer após a execução do programa.

ir para o topo

usando para laço in {START..FINAL..INCREMENT} range going backward

The range of data can be read back by using for-in loop where the starting value of the range is greater than the ending value of the range. No exemplo seguinte, o intervalo começará a partir de 50 e terminará a 30. O valor de $num será decrementado em 10 em cada passo do loop. O script irá imprimir os números a partir do intervalo que são divisíveis por 5 e 10.

#!/bin / bash
echo “os seguintes números são divisíveis por 5 e 10”
# Leia um intervalo usando para laço
para num em {50..30..10}
fazer
# Verificar se o número é divisível por 5 e 10 ou não
if (( $num%5==0 && $num%10==0 ))
em seguida,
echo-n “$num “
fi
done
echo “Feito”

Saída:

Executar o script.

$ bash for5.sh

a seguinte saída irá aparecer após a execução do programa.

Go to Top

Using for loop with 3 parts and condition counter

Bash supports for loop with three parts like other standard programming languages. A primeira parte contém inicialização, a segunda parte contém a condição de terminação e a terceira parte contém Operação de incremento ou decrement. Este laço é usado principalmente quando o número de iteração é previamente definido. No exemplo seguinte, para o loop irá iterar por 50 vezes e calcular a soma de 1 a 50. O resultado da soma será impresso como saída.

#!/bin/bash
# Inicializar a variável
soma=0
# Loop será repetido 50 vezes
por (( n=1; n<=50; n++ ))
fazer
# Adicionar o valor de soma com o próximo valor de n
((soma=$soma+$n))
done
# Imprimir o resultado
echo “A soma de 1 para 50 é de r $soma”

Saída:

Executar o script.

$ bash for6.sh

a soma de 1 a 50 é mostrada na saída.

Ir para o Topo

Usando o loop for com 3 peças e várias condições e ações com vírgula

loop For com três partes, pode ser definida de várias inicializações de rescisão de condições e ações. O exemplo seguinte mostra o uso deste tipo de laço. Aqui, as variáveis $x e $ y são inicializadas por 5 e 25. O loop vai continuar até que o valor de $x é menor ou igual a 20 e o valor de $y é maior que 5. O valor de $x irá aumentar em 5 e o valor de $y irá diminuir em 5 em cada iteração do laço. O valor atual de $x e $y em cada passo será impresso como saída.

#!/bin/bash
# Loop será repetido com base em duas condições
para (( x=5,y=25; x<=20 && y>5; x+=5,y=5 ))
fazer
echo “O valor atual de x=$x e y=$y”
done

> Saída:

Executar o script.

$ bash for7.sh

a seguinte saída irá aparecer após a execução do programa.

Go to Top

Using Infinite for loop

When any loop is defined without any termination condition then the loop works as an infinite loop. O exemplo a seguir mostra o uso do infinito para o loop que não contém nenhuma inicialização, terminação e partes de ação. Este tipo de laço é definido por ponto-e-vírgula duplo (; ;). O seguinte script irá continuar o loop até que o usuário digite ‘quit’ como entrada. O script irá imprimir qualquer número de 1 a 20 que terá como entrada caso contrário ele vai imprimir “o número está fora de alcance”

#!/bin / bash
# Declare infinite loop
for ( ; ; ))
fazer
# Tome uma entrada
echo “Digite um número entre 1 a 20”
leia n
# define a condição de término do loop
se
então
echo “Programa finalizado”
exit 0
fi
# Verificar o intervalo de número de
if (( $n < 1 || $n > 20 ))
então
echo “O número é fora do intervalo”
else
echo “O número é de $n”
fi
done

> Saída:

Executar o script.

$ bash for8.sh

aqui, 6 é tomado como primeira entrada que é um número válido, 22 é tomado como segunda entrada que é um número inválido e quit é tomado como terceira entrada que terminou o programa.

Ir para o Topo

Usando para o laço com condicional de break e continue

‘continuar’ instrução é utilizada para omitir alguma parte(s) do loop baseado em qualquer condição e ‘quebrar’ a instrução é usada para terminar o ciclo com base em qualquer condição. O exemplo a seguir mostra os usos destas afirmações em um laço for. Aqui, o loop é usado para ler uma lista de dados de string e cada valor na lista é armazenado na variável, $food. Quando o valor de $ food é ‘sopa’, então ele vai continuar o loop sem imprimir o valor. Quando o valor de $ food é ‘Pasta’, então ele vai terminar o loop. Quando $food contém qualquer valor que não seja’ sopa ‘e’ massa’, então ele imprimirá o valor. Então, o script irá imprimir dois valores da lista como saída.

#!/bin/bash
# Declarar um loop com uma lista
para alimentos em Pizza, Sopa de Hambúrguer de Macarrão
fazer
# Define a condição para continuar
se
então
continuar
# Define a condição para a quebra de
elif
então
pausa
else
echo “$a comida é o meu favorito”
fi
done

> Saída:

Executar o script.

$ bash for9.sh

aqui, dois valores são omitidos da lista. A expressão “sopa” não é impressa para a declaração de continuidade e a expressão “massa” não é impressa para a declaração de pausa.

Go to Top

Using for loop to read filenames by globbing

Filenames or the particular content of a file can be searched by using globbing. Ele usa diferentes tipos de caracteres especiais para corresponder a qualquer nome de arquivo ou conteúdo de pesquisa no arquivo. Todos os arquivos com a extensão txt do local atual são pesquisados impressos pelo seguinte exemplo. Quando você vai executar o script, então todos os nomes de arquivos correspondentes serão impressos sem a newline como saída.

#!/bin / bash
# Loop irá procurar todos os ficheiros de texto e guardar cada nome de ficheiro em $file
para Ficheiro em “*.txt”;
do
# Print the filename
echo $file;
done

Output:

execute the script.

$ bash for110.sh

Ir para o Topo

Usando o loop for para ler a saída do comando find

‘localizar’ do comando é usado para diferentes fins em bash. No exemplo seguinte, o comando’ find ‘ é usado para ler todos os nomes de ficheiros de texto da localização actual. Aqui, a opção ‘- name ‘ a usar para pesquisa com distinção de maiúsculas. Então, o script irá imprimir os nomes dos arquivos do local atual que tem o ‘.extensão txt com qualquer nome. Aqui, a variável IFS é usada para definir a newline como separador de campo e imprimir o valor de $file em cada linha.

#!/bin / bash
# Set field separator
IFS=$ ‘\n’;
# Read the files of a directory
for file in $(find-name “*.TXT”); do
echo $file
done
# Uunset field separator
unset IFS;

resultado:

execute o programa.

$ bash for11.sh

a seguinte saída irá aparecer após a execução do programa.

ir para o topo

usando o loop para ler os nomes de ficheiros de uma pasta recursivamente

o comando ‘Procurar’ pode ser usado para ler todos os ficheiros e sub-pastas de uma dada pasta. O exemplo seguinte mostra a utilização do comando’ find ‘para ler todos os nomes de ficheiros e pastas na pasta’ mydir’. Aqui, a variável IFS é usada para imprimir o valor de $ filename com ‘newline’ como o exemplo anterior.

#!/bin / bash
# Set field separator
IFS=$ ‘\n’;
# Read the files of a directory
for filename in $(find “mydir”)
do
echo “$filename ”
done
# Unset field separator
unset IFS;

resultado:

execute o programa.

$ bash for12.sh

a seguinte saída irá aparecer após a execução do programa.

Ir para o Topo

Usando o loop for para ler nomes de arquivos de um diretório recursivamente com a condição

‘para’ loop ‘encontrar’ comando pode ser usado para imprimir som+

e particular, nomes de arquivos de um diretório baseado em qualquer condição. o comando ‘find’ é usado com uma condição no seguinte exemplo. Irá procurar apenas os nomes de ficheiros de texto do directório mydir. Aqui, a opção’ – iname ‘é usada com o comando’ find ‘ para a pesquisa sem distinção de maiúsculas. Isso significa que todos os arquivos com a extensão ‘ txt ‘ou’ TXT ‘ serão correspondidos e impressos como saída. Aqui, a variável IFS é usada para imprimir o valor de $ filename com ‘newline’ como o exemplo anterior.

#!/bin / bash
# Set field separator
IFS=$ ‘\n’;
# Read all text files of a directory
for filename in $(find mydir-iname ‘*.txt’); do
echo “$filename ”
done
# Unset field separator
unset IFS;

resultado:

execute o seguinte comando para mostrar a lista de ficheiros e pastas da pasta mydir.

$ ls mydir

execute o programa.

$ bash for13.sh

existem três ficheiros de texto no directório que são mostrados na saída.

Ir para o Topo

Executar o loop até que o arquivo existe

Qualquer nome de arquivo existe ou não é verificado no exemplo a seguir usando o infinito loop for. Neste script, um nome de arquivo terá como entrada em cada iteração do loop e testar o nome do arquivo existe na localização atual ou não. Se o nome do arquivo existir, então o script irá imprimir “arquivo existe” e continuar o loop caso contrário ele vai terminar o loop, imprimindo a mensagem, ‘Arquivo não existe’.

#!/bin/bash
# Define loop infinito
para(( ; ; ))
fazer
# Entrada de um nome de arquivo
echo “Introduza um nome de ficheiro”
ler o arquivo
# Verifique se o arquivo existe ou não
se
então
echo “Filename não existe”
exit 0
else
echo “o Arquivo existe”
fi
done

> Saída:

Executar o script.

$ bash loop14.sh

um nome de ficheiro existente é dado como primeira entrada e um nome de ficheiro não existente é dado como segunda saída que terminou o programa.

Go to Top

Using for loop based on the output of package list command

The information about the installed packages in the system can be retrieved by the command `apt list – installed`. o laço ‘ for ‘ é usado no exemplo seguinte para ler a informação de pacote instalada do comando da lista de pacotes e imprimir cada informação de pacote em cada linha. A variável IFS é usada aqui para imprimir o valor de $line com’ newline ‘ como no exemplo anterior.

# definir o separador de campos
IFS=$ ‘\n’;
# ler file line by line
for line in $(apt list — installed)
do
echo “$line ”
done
# Unsset field separator
unsset IFS;

resultado:

execute o programa.

$ bash for15.sh

A saída mostra a lista de pacotes instalados.

Go to Top

Using for loop to read lines of a file

There are many ways to read a file in bash. o comando ‘ cat ‘ é usado no seguinte exemplo para ler o arquivo, temp.txt. Cada linha do arquivo irá armazenar na variável, $line e imprimir a linha em cada iteração de para loop. A variável IFS é usada aqui para imprimir o valor de $line com’ newline ‘ como no exemplo anterior.

#!/bin / bash
# Set field separator
IFS=$ ‘\n’;
# Read file line by line
for line in $(cat temp.txt)
do
echo “$line”
done
# Unsset field separator
unsset IFS;

resultado:

execute o programa.

$ bash for16.sh

ir para o topo

usando para o loop ler linhas de um ficheiro com correspondência condicional

se quiser imprimir linhas particulares de um ficheiro só então terá de adicionar dentro do loop que é usado para ler o ficheiro. O exemplo seguinte imprime a saída formatada de cada linha de ‘weekday.ficheiro txt baseado numa condição. Se alguma linha do ficheiro contiver o valor, ‘Sunday’, então irá imprimir a mensagem ‘holiday’ caso contrário irá imprimir a mensagem ‘working day’.

# leia o arquivo
para a linha em $(cat weekday.txt)
fazer
#Compare o valor com uma seqüência de caracteres de dados
se
então
echo “$linha é um feriado”
else
echo “$linha é um dia de trabalho”
fi
done

> Saída:

Executar o script.

$ bash for17.sh

a seguinte saída irá aparecer após a execução do programa.

Go to Top

Using while loop with a counter

$counter variable is used any loop to control the iteration of the loop. O exemplo seguinte mostra o uso do laço while com o contador. Aqui, $ counter é inicializado para 1 e enquanto o loop vai iterar 5 vezes e imprimir o valor de $counter em cada iteração. $ counter é incrementado por 1 em cada passo para alcançar a condição de terminação do laço.

#!/bin/bash
# Inicializar contador
contador=1
# Iteração do loop de 5 vezes
enquanto
fazer
echo “valor do Contador = $contador”
((contador++))
done

> Saída:

Executar o script.

$ bash loop18.sh

ir para o topo

usando o ciclo com a entrada do utilizador e sair ao seleccionar a opção sair do menu

‘while’ o ciclo é usado no exemplo seguinte para mostrar um menu de 5 opções. As primeiras quatro opções são usadas para executar quatro operações aritméticas com base na entrada do Usuário e a última opção é usada para sair do script. O menu irá aparecer depois de fornecer dois números como entrada. Se o usuário seleciona ‘1’, Então os números de entrada serão adicionados. Se o utilizador seleccionar “2”, o segundo número de entrada será subtraído do primeiro número de entrada. Se o utilizador seleccionar “3”, os números de entrada serão multiplicados e se o utilizador seleccionar “4”, Então o primeiro número de entrada será dividido pelo segundo número de entrada.

#!/bin / bash
# Take two numbers
echo “Enter a number”
read n1
echo “Enter a number”
read n2
# Declare an infinite loop
while true
do
# Display the menu
echo ” 1. Addition “
echo ” 2. Subtracção”
eco ” 3. Multiplication”
echo ” 4. Division “
echo ” 5. Saída “
echo-n ” seleccionar qualquer número :”
leia# Executar a operação com base no valor selecionado
se ]
então
((result=n1+n2))
elif ]
então
((result=n1-n2))
elif ]
então
((result=$n1*$n2))
elif ]
então
((result=$n1/$n2))
elif ]
então
exit 0
else
echo “entrada Inválida”
fi
echo “O resultado é $resultado”
done

> Saída:

Executar o script.

$ bash loop19.sh

a seguinte saída irá aparecer depois de seleccionar as opções 2 e 5.

Go to Top

combinando enquanto laços com getopts

‘getopts’ é uma função embutida da bash que é usada para ler argumentos e opções no script bash. O exemplo seguinte mostra o uso da função getopts que é usada em um laço while. Aqui, três valores de opção são usados com getopts. Estes são “a”, ” r ” E “c”. Três mensagens diferentes serão impressas para estas opções.

#!/bin / bash
# leia a opção e guarde numa variável
enquanto a opção “arc” dos getopts; fazer
# Verificar o valor da opção
caso ${opção} em
a ) #a opção
echo “o Processo é abortado”
;;
r ) #opção r
echo “o Processo é reiniciado”
;;
c ) #opção c
echo “o Processo é contínuo”
;;
\? ) #opção inválida
eco “uso: ou”
;
esac
feito

resultado:

execute o programa com opções válidas.

$ bash loop20.sh -arc

execute o programa com uma opção inválida.

$ bash loop20.sh -h

Ir para o Topo

Usando até loop com um contador

until pode ser usada com um contador de como o loop while que é mostrado antes. O exemplo a seguir mostra o uso de até laço com um contador. Aqui, a variável $ counter é usada para controlar a iteração do laço que é inicializado para 1. O loop até vai continuar até o valor de $counter para 5. Então, o loop vai iterar por 6 vezes e imprimir o valor $contador em cada passo. $ counter será decretado por 1 em cada passo para alcançar a condição de terminação do loop.

#!/bin / bash
# Inicializ o contador
contador = 10
# Iterate the loop for 6 vezes
until
do
eco “The current value of counter = $counter”
(((counter–)))
feito

resultado:

execute o script.

$ bash loop21.sh

Ir para o Topo

Terminar até loop com base na entrada do usuário

Qualquer loop termina com base em uma determinada condição. Como até o loop pode ser terminado com base na entrada do Usuário, é mostrado no seguinte exemplo. De acordo com a condição de terminação, o loop terminará quando o valor de $número for superior a 50. O valor de $number não é aumentado dentro do loop. Entao., o loop vai continuar a receber a entrada do usuário até que um número de mais de 50 é tomado como entrada.

#!/bin/bash
# Inicializar número=0
# define o padrão para dados numéricos
padrão=’^+$’
# Definir a condição de terminação
até
fazer
echo-n “Digite um número : “
leia# Verificar o valor de entrada é um número ou não
se ! ]
then
echo “error: Not a number “
number=0
else
echo “You have entered $number”
fi
done

Output:

Run the script.

$ bash loop22.sh

O script irá fazer uma iteração do loop novamente para o valor de entrada, 4, exibir a mensagem de erro para o valor de entrada, gg e encerrar o loop para o valor de entrada, 54.

Ir para o Topo

Utilizando nested loops while

Quando um loop for declarado dentro de outro loop, em seguida, ele é chamado de um loop infinito. O exemplo a seguir mostra o uso do ciclo aninhado. Aqui, o primeiro enquanto o loop vai iterar por 2 vezes e o segundo enquanto o loop dentro do primeiro loop vai iterar por três vezes. A iteração total dos loops é 2×3 = 6 vezes. as variáveis $I E $j são usadas para controlar a iteração desses loops e os valores dessas variáveis em cada passo são impressos como saída.

#!/bin/bash
# Inicializar i e j
i=1
j=1
# Define condição de término para i
enquanto
fazer
# Define condição de término para j
enquanto
fazer
# Imprime o valor atual de i e j
printf “i=%d, j=%d\n” $i $j
((j++))
done
j=1
((i++))
done

> Saída:

Executar o script.

$ bash loop23.sh

Ir para o Topo

Usando até loop de suspensão/espera para a tarefa em segundo plano iniciado no script

Qualquer processo pode ser executado no plano de fundo usando o ‘&’ símbolo. Como um processo pode ser executado em segundo plano usando até o loop e terminar o loop com base no tempo especificado no comando sleep é mostrado neste exemplo. Aqui, a variável $cnt é usada para terminar o ciclo. O loop vai iniciar o processo de fundo e escrever a saída em um arquivo de texto chamado “saída.txt ” por um segundo. Depois disso, a condição de terminação do laço verificará e retornará falso. Em seguida, o script vai imprimir uma mensagem, “dormindo…” e sair do script após 3 segundos.

#!/bin/bash
# Inicializar contador
cnt=1
# Define condição de terminação
até
fazer
echo “processo de plano de Fundo está em execução”;
# Espere 1 segundo
sleep 1;
((cnt++))
done > saída.txt&
# espere por 3 segundos
echo ” Sleeping…”
sono 3

resultado:

execute o programa.

$ bash loop24.sh

Verifique a saída do programa.

$ cat output.txt

Ir para o Topo

Usando o loop while para ler pid do ps de saída que não está terminada

comando’ps’ é utilizado para obter informações sobre a execução de todos os processos do sistema. Ele fornece informações de detalhes sobre qualquer processo em execução, como id de usuário, PID, uso de cpu, uso de memória, etc. O exemplo a seguir mostra como um laço while pode ser usado para ler a informação do processo em execução relacionada com ‘apache’. Aqui, a variável IFS é usada para imprimir o PID de cada processo com uma nova linha. Em seguida, ele vai esperar que o Usuário para pressionar qualquer chave para sair do script.

#!/bin / bash
# Set field separator
IFS= ”
while
do
# Retrieve all running process id of apache
pid= ‘ps-ef / grep” apache | / awk ‘{print $2 ” process is running …”}”
echo $pid
# Espere 1 segundo
suspensão 1
# Pressione qualquer tecla para encerrar o loop
echo “Pressione qualquer tecla para terminar”
se ler -r -N 1 ; em seguida,
pausa
fi
done
# Remover o separador de campo
unset IFS

> Saída:

Executar o script.

$ bash loop25.sh

o PID de todo o processo em execução baseado em ‘apache’ é mostrado na saída.

ir para o topo

pesquisar qualquer cadeia de caracteres num ficheiro usando o loop e o exit

criar um ficheiro com o nome mês.txt com o seguinte conteúdo para testar o programa bash indicado em baixo.

mês.txt

January
February
March
April
May
June
July
August
September
October
November
December

‘enquanto o’ loop é usado no exemplo a seguir para ler mês.txt file line by line. Se qualquer linha contiver o valor, ‘June’, então ele imprimirá “Enjoy summer vacation” e terminará a partir do script caso contrário ele imprimirá o valor de $line.

#!/bin / bash
# define o nome do ficheiro como sendo
nome do ficheiro= ” mês.txt”
# Lê o arquivo linha por linha,
enquanto IFS= leia -r linha
fazer
# Verifique o valor da linha é igual a junho de
# Encerrar o programa, se a condição é true
se ];
então
echo “Desfrutar de férias de Verão”
exit 0
else
echo $linha
fi
done < $filename

> Saída:

Executar o script.

$ bash loop26.sh

aqui, ‘junho’ existe no mês do ficheiro.txt que termina o loop. Assim, outros nomes de meses depois de ‘junho’ não serão lidos pelo loop.

ir para o topo

combinar bash com curl para avaliar os dados do URL

os dados podem ser transferidos de ou para qualquer servidor de rede Na bash, usando o comando ‘curl’ com qualquer protocolo suportado como HTTP, FTP, TELNET, etc. É uma ferramenta de linha de comando. Como o comando ‘curl’ pode ser usado para avaliar dados de URL usando para loop é mostrado no seguinte exemplo. Aqui, para o loop irá ler uma lista de url e passar cada valor de URL no curl e imprimir os dados recebidos do URL.

#!/bin/bash
# Leia cada uma URL da lista
para url “yahoo.com” “youtube.com”
fazer
# Impressão de código de resposta HTTP para cada URL
echo $url; curl-v -m 5 -s $1 “$url” | grep HTTP/1.1;
done

> Saída:

Executar o script.

$ bash loop27.sh

ir para o topo

ler dados de uma porta enviada pelo netcat usando o loop

o comando’netcat’ é usado para ler e escrever dados sobre a rede usando o protocolo TCP ou udp. o comando ‘ nc ‘é usado na bash para executar o comando’ netcat’. O exemplo seguinte mostra a utilização do comando’ nc ‘ em ciclo fechado. Aqui, o script irá tentar se conectar com a porta 1234 usando o comando nc e irá imprimir uma mensagem no outro terminal se ele puder se conectar. Tem de abrir outra janela ou página de terminal para executar o comando ‘nc localhost 1234’ para fazer uma ligação. Depois de estabelecer a conexão, qualquer mensagem pode ser transferida de um terminal para outro terminal.

#!/bin / bash
echo ” Listening on port 1234 …”
# Leia a mensagem passada pelo netcat na porta 1234
ao ler o texto
fazer
# Terminar o ciclo, se a mensagem recebida é “sair”
se ; em seguida,
echo “Bye”
pausa
else
echo “$texto”
fi
# mensagem de Impressão quando a porta está ligado
done < <((printf “bem-vindo.\R\nType alguma mensagem: “| / nc-l 1234)

resultado:

execute o script em um terminal para iniciar a escuta na porta 1234.

$ bash loop28.sh

em seguida, abra um outro terminal e execute o seguinte comando para se comunicar com

o primeiro terminal.

$ nc localhost 1234

irá mostrar uma mensagem de Boas-Vindas no segundo terminal. Se o usuário digitar algo no segundo terminal, então ele será exibido no primeiro terminal. Quando o usuário digitar ‘quit’ no segundo terminal, então o script terminará exibindo uma mensagem, ‘Bye’ no primeiro terminal.

ir para o topo

ping URL usando um loop

você pode descobrir que qualquer site está ao vivo ou não executando o comando ‘ping’ com o URL do site. o comando ‘ping’ é usado com ‘google.com” no exemplo seguinte para verificar a conexão à Internet está funcionando ou não. Enquanto o ciclo irá iterar 5 vezes no script e tentar contactar google.com. Se o servidor responder, então ele vai imprimir “a Internet está funcionando” e terminar o loop. Se o loop itera 5 vezes e não recebe nenhuma resposta do servidor, então ele vai imprimir “nenhuma conexão de Internet”.

#!/bin/bash
# Definir o contador
count=5
enquanto>]
fazer
# Tentar ping google.com
ping -c 1 google.com
c=$?
# Verificar o status de código
se ]
então
echo “A Internet está a funcionar”
exit 0
fi
# Decrementar o contador
((count–))
done
echo “Nenhuma conexão com a Internet”

Saída:

execute o script.

$ bash loop29.sh

obterá uma saída semelhante se a sua ligação à Internet estiver a funcionar correctamente.

Ir para o Topo

top em Execução no modo em lotes usando um loop e registo de saída

‘top’ de comando é um Linux ferramenta administrativa que é usado para examinar o uso dos recursos do sistema, gerenciar diferentes tarefas e monitorar processos em execução. Como você pode executar o comando ‘ top ‘ no modo de lote usando para loop e armazenar os registros em um arquivo de texto é mostrado no seguinte exemplo. Aqui, a opção-b é usada para iniciar o comando’ top ‘ no modo em lote e a opção-p é usada para definir o id do processo que deseja monitorizar. A saída do comando’ top ‘ será armazenada na saída.ficheiro txt.

#!/bin / bash
# o laço irá iterar por 5 vezes e executar o comando superior
para ((i = 0; i< 5; i++))
do
top-B-p 2875-n1 | tail -1 >> saída.txt
feito

resultado:

primeiro, execute o seguinte comando para encontrar a lista dos processos em execução.

$ ps

Agora, execute o script.

$ bash loop30.sh

execute o seguinte comando para ver o resultado do programa.

$ cat output.txt

Go to Top

Conclusion

Loops can be used in bash in various ways to do different types of simple or complex tasks. Como três tipos de loops podem ser usados na bash para diferentes tarefas como obter lista ou array, ler arquivos ou qualquer saída de comando, etc. são mostrados neste artigo usando exemplos muito simples. Espero que estes exemplos ajudem o leitor a entender mais claramente os usos do loop bash.

Deixe uma resposta

O seu endereço de email não será publicado.

More: