quinta-feira, 18 de abril de 2019

Shell Script: repetição e função

0 comentários
Uma estrutura de repetição, também conhecida como loop ou laço, é uma estrutura de desvio do fluxo de controle presente em linguagens de programação que realiza e/ou repete diferentes algoritmos/ações dependendo se uma condição é verdadeira ou falsa. Vejamos os comandos while, until e for.
While
Os comandos são executados enquanto a condição for verdadeira. No exemplo a seguir, enquanto o contador for diferente (“ne” significa “not equal”) de 4, será imprimida na tela uma mensagem, será aguardado 1 segundo e atualizado o contador:
For
O laço for executa uma ação até que uma condição seja atendida. No exemplo abaixo, cada linha do arquivo subs.csv é lida (através do comando “cat” e impressa usando “echo”) até o final do arquivo e as letras maiúsculas são substituídas por minúsculas, mandando a saída para o arquivo subestacoes.csv:
Veja esse outro exemplo, onde o for serve para varrer todos os arquivos com extensão “.csv” e pega partes do nome do arquivo para criar pastas e mover os arquivos para esses novos diretórios:
Funções
Uma forma de repetir comandos é através do uso de funções. A função é um bloco de código que pode ser invocado pelo resto do script apenas escrevendo o nome da função. Ela deve ser escrita antes da rotina principal (ou escreva a rotina principal dentro de outra função e chame-a depois). A função não recebe parâmetros de entrada, assim a função deve ser chamada e em seguida incluir a variável (ou variáveis) a ser utilizada na função, enquanto que na função deve-se usar “$1” para receber essa variável (ou $2, $3.. para mais variáveis). Veja esse exemplo:
Um exemplo integrando tudo. O separador de campo é alterado para quebra de linha (e restaurado no final do script). Para todas as linhas do arquivo, são extraídos em diferentes variáveis os campos ano, mês, dia… cidade, incluído o zero na frente do número (caso tenha apenas 1 dígito, através do while), e impressos no arquivo de saída conforme a variável “novalinha”:
Fonte: https://www.monolitonimbus.com.br/shell-script-repeticao-e-funcao/

Leave a Reply