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:
- usando para o loop para ler itens em uma lista
- usando para o loop para ler um array
- usando para o loop para ler uma lista de valores de cadeia com espaços
- usando para o loop in {START..FINAL..INCREMENT} intervalo
- usando para o ciclo em {início..FINAL..INCREMENTO} intervalo indo para trás
- Usando o loop for com 3 peças e condição de contador
- Usando o loop for com 3 peças e várias condições e ações com vírgula
- Usando o Infinito loop for
- Usando para o laço com condicional de break e continue
- Usando o loop for para ler nomes de arquivos pelo englobamento
- Usando o loop for para ler a saída do comando find
- Usando o loop for para ler nomes de arquivos de um diretório recursivamente
- Usando o loop for para ler nomes de arquivos de um diretório recursivamente com a condição
- Executar o loop até que o arquivo existe
- Usando o loop for com base na saída do pacote de comando list
- Usando o loop for para ler cada linha de um arquivo
- Usando o loop for para ler cada linha de um arquivo com base em um condicional correspondem
- Usando o loop while com um contador
- Usando o loop while, com a entrada do usuário e sair quando seleccionar sair a partir de um menu
- a combinação de loops com getopts
- Usando até loop com um contador
- Terminar até loop com base na entrada do usuário
- Utilizando nested loops while
- Usando até loop de suspensão/espera para a tarefa de plano de fundo começou no script
- Usando o loop while para ler pid do ps de saída que não está terminada
- Procurar qualquer seqüência de caracteres em um arquivo usando o loop e sair
- Combinando bash com curvatura para avaliar os dados de URL
- Leitura de dados de uma porta de envio pelo netcat usando o loop while
- ping URL usando o loop
- 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
- Using for loop to read an array
- usar para o ciclo para ler uma lista de valores de cadeia com espaços
- usando para laço in {START..FINAL..INCREMENT} range
- usando para laço in {START..FINAL..INCREMENT} range going backward
- Using for loop with 3 parts and condition counter
- Usando o loop for com 3 peças e várias condições e ações com vírgula
- Using Infinite for loop
- Usando para o laço com condicional de break e continue
- Using for loop to read filenames by globbing
- Usando o loop for para ler a saída do comando find
- usando o loop para ler os nomes de ficheiros de uma pasta recursivamente
- Usando o loop for para ler nomes de arquivos de um diretório recursivamente com a condição
- Executar o loop até que o arquivo existe
- Using for loop based on the output of package list command
- Using for loop to read lines of a file
- usando para o loop ler linhas de um ficheiro com correspondência condicional
- Using while loop with a counter
- usando o ciclo com a entrada do utilizador e sair ao seleccionar a opção sair do menu
- combinando enquanto laços com getopts
- Usando até loop com um contador
- Terminar até loop com base na entrada do usuário
- Utilizando nested loops while
- Usando até loop de suspensão/espera para a tarefa em segundo plano iniciado no script
- Usando o loop while para ler pid do ps de saída que não está terminada
- pesquisar qualquer cadeia de caracteres num ficheiro usando o loop e o exit
- combinar bash com curl para avaliar os dados do URL
- ler dados de uma porta enviada pelo netcat usando o loop
- ping URL usando um loop
- top em Execução no modo em lotes usando um loop e registo de saída
- Conclusion
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.
# 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.
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.
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.
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.
# 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.
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.
# 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.
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.
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.
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.
# 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.
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.
# 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.
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”
# 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.
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.
# 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.
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.
# 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.
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.
# 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.
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.
# 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.
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.
# 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.
execute o programa.
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’.
# 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.
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.
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.
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.
# 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.
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’.
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.
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.
# 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.
ir para o topo
‘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.
# 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.
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.
# 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.
execute o programa com uma opção inválida.
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.
# 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.
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.
# 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
se ! ]
then
echo “error: Not a number “
number=0
else
echo “You have entered $number”
fi
done
Output:
Run the script.
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.
# 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.
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.
# 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.
Verifique a saída do programa.
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.
# 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.
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
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.
# 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.
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.
# 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.
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.
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.
em seguida, abra um outro terminal e execute o seguinte comando para se comunicar com
o primeiro terminal.
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”.
# 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.
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.
# 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.
Agora, execute o script.
execute o seguinte comando para ver o resultado do programa.
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.