Como usar as funções em Bash
- Definir Funções em Bash
- Escopo das Variáveis em Bash
- Retornar valores da função em Bash
- Passar Argumentos para uma Função Bash
Uma função é um dos aspectos mais importantes de toda linguagem de programação, e torna nosso código reutilizável e legível. O mesmo código usado repetidas vezes é escrito dentro de uma função. E quando precisamos do bloco de código, simplesmente chamamos a função definida.
Definir Funções em Bash
Para definir funções em Bash, podemos usar qualquer uma das duas abordagens a seguir:
Nesta abordagem, escrevemos o nome da função seguido de parênteses. Em seguida, definimos as funções dentro dos suportes de encaracolar. As funções usando este formato podem ser definidas usando qualquer um dos formatos:
function_name(){
statements
}
function_name() { statements }
Nesta abordagem, especificamos a palavra-chave function
antes do nome da função.
function_name(){
statements
}
function_name() { statements }
As afirmações dentro das chaves encaracoladas determinam o que a função faz. O nome da função não tem nada a ver com o que a função faz, mas devemos tornar os nomes das funções descritivos. A definição da função não fará nada. Para executar os comandos na definição da função, devemos chamar a função.
Para chamar a função em Bash
, utilizamos o nome da função.
#! /bin/bash
greet(){
echo 'Hello, Folks. Welcome to DelftStack!'
}
greet
Resultado:
Hello, Folks. Welcome to DelftStack!
Aqui, definimos a função no início com o nome greet
e depois chamamos a função. Quando chamamos a função, as afirmações dentro de uma definição de função são executadas e, portanto, vemos Hello, Folks. Welcome to DelftStack!
impresso no terminal.
Também podemos definir a função utilizando outra abordagem como:
#! /bin/bash
function greet(){
echo 'Hello, Folks. Welcome to DelftStack!'
}
greet
Resultado:
Hello, Folks. Welcome to DelftStack!
Devemos ter certeza de que sempre definimos a função antes de chamá-la.
Escopo das Variáveis em Bash
O escopo das variáveis pode ser global ou local em Bash, assim como de outras linguagens de programação. Entretanto, o escopo padrão das variáveis é sempre global, mesmo que seja declarado dentro do escopo da função. Devemos utilizar a palavra-chave local
para tornar uma variável local.
#! /bin/bash
gvar1=1
gvar2=2
change_variables() {
local gvar1=10
gvar2=7
echo "Inside Function: gvar1: $gvar1, gvar2: $gvar2"
}
echo "Before executing function: gvar1: $gvar1, gvar2: $gvar2"
change_variables
echo "After executing function: gvar1: $gvar1, gvar2: $gvar2"
Resultado:
Before executing function: gvar1: 1, gvar2: 2
Inside Function: gvar1: 10, gvar2: 7
After executing function: gvar1: 1, gvar2: 7
Aqui, gvar1
e gvar2
declaradas no topo são variáveis globais.
Dentro da função, gvar1
é declarada como uma variável local uma vez que utilizamos a palavra-chave local
com gvar1
enquanto gvar2
ainda se refere a uma variável global uma vez que não tem uma palavra-chave local
. Portanto, o valor de gvar2
é alterado globalmente pela função enquanto que o valor de gvar1
é alterado apenas dentro da função.
Retornar valores da função em Bash
Ao contrário de outras linguagens de programação, Bash não nos permite retornar valores da função. O valor retornado da função Bash é o status da última declaração executada na função. O número 0
representa o sucesso, enquanto o número de 1-255
representa o fracasso. Podemos especificar o status de saída da função utilizando a palavra-chave return
. A declaração return
também encerra a função.
#! /bin/bash
return_value(){
echo "This function returns 20!"
return 30
echo "After return statement"
}
return_value
echo $?
Resultado:
This function returns 20!
30
Aqui, podemos ver que a função return_value
retorna o valor 30
utilizando a instrução return
, e o valor é atribuído à variável $?
.
Também podemos observar que a função é encerrada após a instrução return
ser executada, pois os comandos abaixo da instrução return
não são executados.
Se quisermos retornar algum valor de uma função, podemos atribuir o valor a uma variável global e acessar a variável de fora da função para recuperar o valor.
#! /bin/bash
send_message(){
message_from_function="Hello From the function!"
}
send_message
echo $message_from_function
Resultado:
Hello From the function!
No programa, atribuímos o valor a ser retornado à variável global message_from_function
e então acessamos o valor retornado da variável.
Passar Argumentos para uma Função Bash
Para passar argumentos para uma função Bash, nós simplesmente colocamos os argumentos após a função. Se quisermos passar mais de um argumento para uma função, separamos os argumentos por um espaço. Para evitar o desajuste dos argumentos, podemos embrulhar os argumentos em aspas duplas.
Os parâmetros são acessados com $1
$2
e assim por diante, com base em sua posição. $0
representa o nome da função enquanto $#
contém o número de argumentos posicionais na função.
#! /bin/bash
send_message(){
message_from_function="Hello $1 "
}
send_message
echo $message_from_function "Delft!"
Resultado:
Hello Delft!
Aqui, o argumento Delft!
é passado para a função e acessado na função pelo parâmetro $1
, e obtemos Hello Delft!
como a saída final da função.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn