—
COLA BASH FUNÇÕES E LOOPS
—
Basicamente, a função bash é um conjunto de comandos. É usado principalmente para executar um único ou grupo de comandos repetidamente. As funções facilitam a leitura do código e a execução de instruções significativas do código do conjunto.
—
Você pode declarar uma função bash nos dois seguintes formatos:
—formato-1
function_name() {
commands
}
—formato-2
function function_name() {
commands
}
—
Execute no terminal:
function nome_da_funcao() { echo ‘Alou Mundo!’; echo ‘Como vai você?’; }
—
Chame a função:
nome_da_funcao
—
RESULTADO:
~:$ function nome_da_funcao() { echo ‘Alou Mundo!’; echo ‘Como vai você?’; }
~:$ nome_da_funcao
Alou Mundo!
Como vai você?
~:$
—
OBS:
EXISTEM EXEMPLOS QUE TEM ESPAÇO ENTRE O NOME DA FUNÇÃO PARÊNTESES E AS CHAVES. VOCÊ PODE DECLARAR UMA FUNÇÃO E EXECUTAR ELA NO MESMO SCRIPT.
—
Declaração da função Bash
A sintaxe para declarar uma função bash é muito simples. Elas podem ser declaradas em formatos diferentes como já foi dito aqui. O primeiro formato começa com o nome da função, seguido por parênteses. Dizem que este é o formato preferido e mais usado:
#!/usr/bin/env bash
function_name () {
command1
command2
command3
}
—
Em uma só linha:
function_name () { comando1; comando2; comando3; }
—
Teste:
hello () { echo -e ‘\nHello World!\n’; }
—
Executando a função…
NO TERMINAL CHAMA A FUNÇÃO PELO NOME.
$ hello
—
O SEGUNDO FORMATO COMEÇA COM A PALAVRA RESERVADA DA FUNÇÃO SEGUIDA PELO NOME DA FUNÇÃO.
function function_name {
comando1
comando2
comando3
}
—
EM UM LINHA SÓ:
function function_name { cmd1; cmd2; cmd3; }
—
NO TERMINAL CHAMA A FUNÇÃO PELO NOME:
$ function_name
—
Teste:
function mycmd { ls -At; pwd; date; whoami; }
—
NO TERMINAL CHAMA A FUNÇÃO PELO NOME:
$ mycmd
—
FUNCIONA TANBÉM USANDO O EXEMPLO ABAIXO:
==> FUNÇÃO
function myfunc(){ cmd1; cmd2; cmd3; }
—
Teste:
function diatemp(){ echo ‘Que dia hoje?’; date; echo ‘Tempo pc ligado?’; uptime; }
NO TERMINAL CHAMA A FUNÇÃO PELO NOME:
$ diatemp
—
Exemplo:
~:$ function diatemp(){ echo ‘Que dia hoje?’; date; echo ‘Tempo pc ligado?’; uptime; }
~:$ diatemp
Que dia hoje?
ter mar 10 06:22:50 -03 2020
Tempo pc ligado?
06:22:51 up 3:06, 1 user, load average: 5,48, 5,24, 6,09
~:$
—
==> LOOP FOR
1- Executa cmd 5x:
for i in {1..5}; do cmd_1_aqui; cmd_2_aqui; cmd_n_aqui; done
—
Exemplo:
~:$ for i in {1..5}; do echo ‘Alô Mundo!’; done
Alô Mundo!
Alô Mundo!
Alô Mundo!
Alô Mundo!
Alô Mundo!
—
2-Trabalha Arquivos:
for i in *; do echo $i; done
—
for i in /etc/*.conf; do cp $i /bkp; done
—
Escopo das variáveis – Variáveis globais são variáveis que podem ser acessadas de qualquer lugar do script, independentemente do escopo. No Bash, todas as variáveis por padrão são definidas como globais, mesmo se declaradas dentro da função. Variáveis locais podem ser declaradas dentro do corpo da função com a palavra-chave local e podem ser usadas apenas dentro dessa função. Você pode ter variáveis locais com o mesmo nome em diferentes funções.
Para ilustrar melhor como o escopo das variáveis funciona no Bash, vamos considerar um exemplo:
—
#!/usr/bin/env bash
# Nome: variaveis_escopo.sh
var1=’A’
var2=’B’
my_function () {
local var1=’C’
var2=’D’
echo “Primeira alteração: var1: $var1, var2: $var2”
}
echo “Variaveis iniciais: var1: $var1, var2: $var2”
my_function
echo “Depois de executar a função: var1: $var1, var2: $var2″
—
Outra opção melhor para retornar um valor de uma função é enviar o valor para stdout usando echo ou printf, como mostrado abaixo:
—
#!/bin/bash
# Título: retorna_valores.sh
my_function () {
local func_result=”Resultado: claytu dinamiti.”
echo “$func_result”
}
func_result=”$(my_function)”
echo $func_result
—
RETORNAR VALORES – diferente das funções em outras linguagens de programação, as funções do Bash não permitem que você retorne um valor quando chamado. Quando uma função bash é concluída, seu valor de retorno é o status da última instrução executada na função, 0 para êxito e número decimal diferente de zero no intervalo de 1 a 255 para falha. O status de retorno pode ser especificado usando a palavra-chave return e é atribuído à variável 0. A instrução return encerra a função. Você pode pensar nisso como o status de saída da função.
#!/bin/bash
my_function () {
func_result=”Algum Resultado”
}
my_function
echo $func_result
—
PASSANDO ARGUMENTOS PARA FUNÇÕES BASH – Para passar qualquer número de argumentos para a função bash, basta colocá-los logo após o nome da função, separados por um espaço. É uma boa prática aspas duplas nos argumentos para evitar a análise incorreta de um argumento com espaços nele.
1) Os parâmetros passados são $1, $2, $3 … $n, correspondentes à posição do parâmetro após o nome da função.
2) Parâmetro $0 A variável é reservada para o nome da função.
3) Parâmetro $# A variável mantém o número de parâmetros / argumentos posicionais passados para a função.
4) Parâmetro $* e $@ variaveis mantém todos os positional parameters/argumentos passados para a função.
5) Quando entre aspas o parâmetro, “$*” expande para uma única sequência separada por espaço (o primeiro caractere do IFS).
6) Quando entre aspas o parâmetro, “$@” expande para separar strings – “$1” “$2” “$n”.
7) Sem aspas duplas os parâmetros, $* e $@ são os mesmos, não tem diferença.
—
Aqui um exemplo:
./passando_argumentos.sh
—
#!/usr/bin/env bash
# Título: passando_argumentos.sh
saudacao () {
echo “Olá $1”
}
—
OBS:
Salve o script. De permissão de execução. Chame o nome da função seguida de “Jorge”.
—
$ saudacao “Jorge”
Olá Jorge
—
BASH LOOP FUNÇÕES
USE O LOOP FOR PARA EXCLUIR ARQUIVOS:
—
#!/usr/bin/env bash
for f in ~/*.txt; do [ -f “$f” ] && rm “$f”; done
# oneliner # if (se) tem arquivo, delete eles
—
==> Executar um loop sobre vários arquivos escolhidos executando um comando:
for f in file1 file2 file3 file4; do AQUI_O_CMD; done
—
Teste o comando abaixo no terminal:
for i in 1 2 3 4 5 6; do ls -t; pwd; done
—
DECLARANDO E CHAMANDO A FUNÇÃO:
—
#!/usr/bin/env bash
# Nome: Bem-vindo.sh
# declarando Bem-vindo() function
Bem-vindo () {
# lista de comandos
echo ‘Bem-vindo(a) aqui!’
}
# chamando a função Bem-vindo
Bem-vindo
—
PERMISSÃO DE EXECUÇÃO PARA O SCRIPT:
chmod +x Bem-vindo.sh
—
Resultado:
~:$ ./Bem-vindo.sh
Bem-vindo(a) aqui!
~:$
—
Conclusão – Uma função Bash é um bloco de código reutilizável projetado para executar uma operação específica. Uma vez definida, a função pode ser chamada várias vezes em um script. Você também pode usar uma função Bash para criar um comando de atalho memorável para um comando mais longo.
—
Até Breve!
🙂
—