0Pricing
DevOps Bootcamp · Aula

Funções em Scripts Bash

Organize seu código com funções, promovendo a reutilização e tornando seus scripts mais claros e fáceis de manter.

Funções em Scripts Bash é uma aula grátis de DevOps Bootcamp no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de DevOps Bootcamp, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de DevOps Bootcamp inclui 4 aulas no total.

O que são funções do Bash?

Em scripts Bash, uma função é um bloco de código que executa uma tarefa específica. Pense nela como um minisscript dentro do seu script principal.

As funções ajudam você a:

  • Reutilizar código: escrever uma parte da lógica uma vez e chamá-la várias vezes.
  • Organizar scripts: dividir tarefas complexas em unidades menores e gerenciáveis.
  • Melhorar a legibilidade: tornar seu script mais fácil de entender e manter.

Definindo uma função simples

Há duas formas comuns de definir uma função no Bash. Ambas produzem o mesmo resultado. A primeira sintaxe é a mais comum.

Tente executar este exemplo. Ele define funções, mas ainda não as chama!

#!/bin/bash

# Method 1: The most common way
my_first_func () {
  echo "Hello from my_first_func!"
}

# Method 2: Using the 'function' keyword
function my_second_func {
  echo "Hello from my_second_func!"
}

echo "Functions defined, but not called."

Chamando suas funções

Definir uma função não a executa. Para executar o código dentro de uma função, basta chamá-la pelo nome, assim como qualquer outro comando.

Veja como chamamos my_function depois de defini-la:

#!/bin/bash

my_function () {
  echo "This message is from inside the function."
}

echo "Script started."
my_function # Call the function here
echo "Script finished."

Variáveis locais em funções

Por padrão, as variáveis definidas dentro de uma função Bash são globais, o que significa que podem ser acessadas e modificadas de qualquer lugar do script.

Para evitar efeitos colaterais indesejados e manter suas funções isoladas, use a palavra-chave local para declarar uma variável como local. As variáveis locais só existem dentro dessa função.

#!/bin/bash

global_message="I'm a global message"

my_function () {
  local func_message="I'm a local message"
  global_message="I've been changed by the function!"
  echo "Inside func: $func_message"
  echo "Inside func: $global_message"
}

echo "Before func: $global_message"
my_function
echo "After func: $global_message"
echo "After func: $func_message (This will be empty)"

Passando argumentos para funções

Você pode passar informações para suas funções usando argumentos, assim como faria com comandos comuns do shell. Dentro da função, esses argumentos são acessados por meio de variáveis especiais:

  • $1, $2, $3...: argumentos individuais
  • $#: o número total de argumentos
  • $@: todos os argumentos como strings separadas
#!/bin/bash

greet_user () {
  echo "Hello, $1!"
  echo "You are $2 years old."
  echo "Total arguments received: $#"
  echo "All arguments: $@"
}

echo "Calling greet_user with two arguments:"
greet_user "Alice" 30

echo "\nCalling greet_user with one argument:"
greet_user "Bob"

Status de saída da função (retorno)

Uma função, assim como qualquer comando, retorna um status de saída. Por convenção, 0 significa sucesso, e qualquer valor diferente de zero indica um erro.

Você usa a palavra-chave return para definir esse status de saída. Depois, pode verificá-lo usando a variável especial $? logo após a chamada da função.

#!/bin/bash

check_age () {
  local age=$1
  if [ "$age" -ge 18 ]; then
    return 0 # Success: 18 or older
  else
    return 1 # Failure: under 18
  fi
}

check_age 25
echo "Exit status for 25: $?"

check_age 16
echo "Exit status for 16: $?"

if check_age 20; then
  echo "User is an adult."
else
  echo "User is a minor."
fi

Capturando a saída de uma função

Enquanto return envia um status de saída, se você quiser que uma função produza um “valor” que possa ser armazenado em uma variável, a função deverá enviar esse valor para a saída padrão usando echo.

Depois, você captura essa saída usando a substituição de comandos, envolvendo a chamada da função em $(...).

#!/bin/bash

get_full_name () {
  local first_name=$1
  local last_name=$2
  echo "$first_name $last_name" # Echo the full name
}

name="$(get_full_name "John" "Doe")"

echo "Full name captured: $name"

calculate_area () {
  local length=$1
  local width=$2
  echo $((length * width))
}

area=$(calculate_area 10 5)
echo "Calculated area: $area"

Exemplo prático: um registrador

Veja um exemplo prático de uma função reutilizável: um registrador simples. Essa função pode ser chamada em todo o script para exibir mensagens com um registro de data e hora, facilitando a depuração e o acompanhamento.

#!/bin/bash

log_message () {
  local timestamp=$(date +"%Y-%m-%d %H:%M:%S")
  local message="$1"
  echo "[$timestamp] $message"
}

log_message "Script execution started."
sleep 1 # Simulate some work
log_message "Processing user data..."
sleep 1
log_message "Operation completed successfully."

Boas práticas para funções

Para escrever scripts claros e fáceis de manter usando funções, considere estas dicas:

  • Mantenha a simplicidade: cada função deve fazer uma coisa bem.
  • Use nomes significativos: use nomes descritivos como validate_input ou create_backup.
  • Use local: use sempre local para variáveis dentro de funções, a fim de evitar conflitos.
  • Adicione comentários: explique o que sua função faz, quais são seus argumentos e o que ela retorna.
  • Valide a entrada: se uma função espera argumentos específicos, verifique-os.

Verificação de argumentos da função

Teste sua compreensão sobre como os argumentos são passados para funções Bash e acessados dentro delas.

Funções: revisão e próximos passos

Parabéns! Você dominou as funções do Bash.

Abordamos:

  • Definição e chamada de funções.
  • Uso de local para o escopo de variáveis.
  • Passagem de argumentos com $1, $#, $@.
  • Definição do status de saída com return.
  • Captura da saída com echo e substituição de comandos.

As funções são fundamentais para escrever scripts Bash modulares, reutilizáveis e fáceis de manter. Continue praticando para tornar seus scripts mais poderosos e organizados!

Perguntas Frequentes

A aula “Funções em Scripts Bash” é grátis?

Sim — o texto completo de “Funções em Scripts Bash” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de DevOps Bootcamp, atualize para CoddyKit PRO. O curso de DevOps Bootcamp inclui 4 aulas no total.

O que vou aprender em “Funções em Scripts Bash”?

Organize seu código com funções, promovendo a reutilização e tornando seus scripts mais claros e fáceis de manter. Você pratica DevOps Bootcamp com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar DevOps Bootcamp?

Nenhuma experiência prévia é necessária. DevOps Bootcamp no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Funções em Scripts Bash”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de DevOps Bootcamp?

Sim. Cada aula de DevOps Bootcamp inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Estruturas de Repetição (for, while)
  2. Funções em Scripts Bash
  3. Argumentos e Opções de Scripts ($@, $#, getopts)
  4. A Instrução case e a Correspondência de Padrões
← Voltar para DevOps Bootcamp