O BASH (sigla para Bourne Again Shell) é uma linguagem de script utilizada pela maioria dos sistemas operacionais baseados em Linux e UNIX.
Você pode executar comandos BASH dentro de uma janela de terminal, um após o outro, ou pode adicionar os comandos a um arquivo de texto para produzir um script de shell.
O melhor de escrever scripts de shell é que você pode executá-los de novo e de novo. Por exemplo, imagine que você precisa adicionar um usuário a um sistema, definir suas permissões e gerenciar seu ambiente inicial. Você pode escrever os comandos em um pedaço de papel e executá-los ao adicionar novos usuários ou pode escrever um único script e apenas passar parâmetros para esse script.
Linguagens de script como o BASH possuem construções de programação similares a outras linguagens. Por exemplo, você pode usar parâmetros de importação para obter entrada do teclado e armazená-los como variáveis. Você pode então fazer com que o script execute uma determinada ação com base no valor dos parâmetros de entrada.
Uma parte essencial de qualquer linguagem de programação e script é a capacidade de executar o mesmo código repetidas vezes.
Existem várias maneiras de repetir o código (também conhecido como loops). Neste guia, você será mostrado como escrever um loop "for".
UMA para loop repete uma certa seção do código várias vezes. Eles são úteis para que uma série de comandos possa continuar em execução até que uma determinada condição seja atendida, após o que eles param.
Neste guia, você verá cinco maneiras de usar o loop for dentro de um script BASH.
Antes de começar
Antes de começar com os exemplos de loop, você precisa abrir uma janela de terminal e seguir estas etapas:
-
Entrar scripts mkdir (saiba mais sobre o mkdir aqui).
-
Entrar scripts de cd (isso muda o diretório para roteiros ).
-
Entrar nano examplen.sh (Onde n é o exemplo em que você está trabalhando).
-
Digite o script.
-
pressione CTRL + O para salvar e CTRL + X sair.
-
Corre bash examplen.sh (novamente, com n sendo o exemplo com o qual você está trabalhando).
Como fazer um loop através de uma lista
#! / bin / bashfor number em 1 2 3 4 5doecho $ numberdoneexit 0
A maneira BASH de usar loops "for" é um pouco diferente da maneira como a maioria das linguagens de programação e scripts manipulam "for" loops. Vamos quebrar o roteiro. Em um loop BASH "for" all, as declarações entre Faz e feito são executados uma vez para cada item na lista. No exemplo acima, a lista é tudo o que vem depois da palavra em (isto é, 1 2 3 4 5). Cada vez que o loop é iterado, o próximo valor na lista é inserido na variável especificada após a palavra "para" . No loop acima, a variável é chamada número . A instrução echo é usada para exibir informações na tela. Portanto, este exemplo leva os números de 1 a 5 e os envia um a um para a tela: O problema com o exemplo acima é que, se você quiser processar uma lista maior (digamos de 1 a 500), demoraria séculos para digitar todos os números em primeiro lugar. Isso nos leva ao segundo exemplo que mostra como especificar um ponto inicial e final: #! / bin / bashfor number in {1..10} doecho "$ number" doneexit 0
As regras são basicamente as mesmas. Os valores após a palavra " em" compõem a lista para percorrer e cada valor na lista é colocado na variável (ou seja, número), e cada vez que o loop itera, as instruções entre Faz e feito são executadas. A principal diferença é a forma como a lista é formada. As chaves {} basicamente denotam um intervalo, e o intervalo, nesse caso, é de 1 a 10 (os dois pontos separam o início e o fim de um intervalo). Este exemplo, portanto, percorre cada número entre 1 e 10 e envia o número para a tela da seguinte maneira: O mesmo loop poderia ter sido escrito assim, com sintaxe idêntica ao primeiro exemplo: para número em 1 2 3 4 5 6 7 8 9 10 O exemplo anterior mostrou como fazer um loop entre um ponto inicial e final, então agora vamos ver como pular números no intervalo. Imagine que você queira fazer um loop entre 0 e 100, mas mostre apenas a cada décimo número. O script a seguir mostra como fazer exatamente isso: #! / bin / bashfor number in {0..100..10} doecho "$ number" doneexit 0
As regras são basicamente as mesmas. Existe uma lista, uma variável e um conjunto de instruções a serem executadas entre Faz e feito . 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 ele irá ignorar. O exemplo acima, portanto, exibe a seguinte saída: A maneira BASH de escrever loops é um pouco estranha quando comparada a outras linguagens de programação. Você pode, no entanto, escrever um loop for em um estilo semelhante à linguagem de programação C, assim: #! / bin / bashfor ((número = 1; número <100; número ++)) {if (($ number% 5 == 0)) thenecho "número $ é divisível por 5" fi} exit 0
O loop começa definindo o número da variável para 1 (número = 1 ). O loop continuará repetindo enquanto o valor de um número for menor que 100 ( número <100 ). O valor de número mudanças adicionando 1 a ele após cada iteração ( número ++ ). Tudo entre as chaves é realizado através de cada iteração do loop. O bit entre as chaves verifica o valor de um número , divide-o por 5 e compara o resto com 0. Se o resto for 0, o número será divisível por 5 e será exibido na tela. Por exemplo: Se você quiser alterar o tamanho da etapa da iteração, você pode alterar a seção do número ++ a ser número = número + 2 , número = número + 5 ou número = número + 10 etc. Isso pode ser ainda mais reduzido número + = 2 ou número + = 5 . For loops pode fazer mais do que iterar listas de números. Você pode realmente usar a saída de outros comandos como a lista. O exemplo a seguir mostra como converter arquivos de áudio de MP3 para WAV: #! / bin / bashpara arquivo em ./*.mp3dompg -w ./wavs/"${file}".wav "$ file" done
A lista neste exemplo é todo arquivo com a extensão .MP3 na pasta atual e a variável é uma Arquivo . o mpg comando converte o arquivo MP3 em WAV. No entanto, você provavelmente precisará instalar isso usando o gerenciador de pacotes primeiro.
Como fazer um loop entre um ponto inicial e final
Como ignorar números em um intervalo
Um mais tradicional procurando Loop
Um exemplo prático