Introdução
Há algumas semanas, embarcamos em um artigo discutindo a importância de aprender Bash para programadores, visando criar uma série de artigos que permitiriam aos programadores mergulhar no Bash enquanto seguem as melhores práticas. Reconhecemos a quantidade significativa de informações disponíveis que muitas vezes negligenciam essas diretrizes essenciais.
Este artigo, especificamente voltado para programadores, tem como objetivo orientá-los na criação de seus scripts iniciais, enfatizando a importância de seguir as melhores práticas.
Primeiros Passos no Bash
Se você é um programador procurando automatizar tarefas ou gerenciar configurações do sistema, aprender a escrever scripts Bash pode ser uma ferramenta incrivelmente poderosa. Bash é um shell de linha de comando e uma linguagem de script usada no Linux, macOS e outros sistemas operacionais baseados em Unix. Neste post do blog, forneceremos um guia passo a passo sobre como escrever seu primeiro script Bash, juntamente com um exemplo.
Passo 0: Escolha seu Editor de Texto
Antes de começarmos a escrever nosso primeiro script Bash, precisamos escolher um editor de texto. Você pode usar qualquer editor de texto com o qual se sinta confortável, mas recomendamos usar o Visual Studio Code.
Para obter informações detalhadas sobre as extensões recomendadas e suas configurações correspondentes para o Visual Studio Code, consulte o seguinte artigo: gauchocode.com/why-learn-bash
Passo 1: Criar nosso primeiro Script
Não há melhor maneira de aprender do que praticando, então o primeiro passo será criar a base do nosso script Bash e, em seguida, testar e executar o código nele conforme necessário.
Abra seu editor de texto e crie um novo arquivo
Chamaremos este arquivo de “myscript.sh“. A extensão “.sh” indica que este é um script Bash
Adicione o Shebang
A primeira linha de um script Bash deve sempre começar com um shebang. O shebang diz ao sistema qual intérprete usar para executar o script. Adicione a seguinte linha no início do seu script:
!/bin/bash
Imprima algo
Agora que temos nosso arquivo configurado, é hora de escrever um script simples que cumprimente o usuário:
!/bin/bash
echo "Welcome to my first Bash script!"
Passo 2: Salvar e Executar Nosso Script
Salve o script e torne-o executável executando o seguinte comando no seu terminal:
chmod +x myscript.sh
Este comando torna o arquivo executável. Agora, podemos executar nosso script digitando o seguinte comando:
./myscript.sh
Você deve ver a seguinte saída no seu terminal:
Welcome to my first Bash script!
Passo 3: Aprender os conceitos básicos de Bash com boas práticas
Neste passo, explicarei alguns conceitos de script Bash com boas práticas, que você pode testar no script recém-criado para avaliar a saída.
Variáveis
- As variáveis devem sempre ser referenciadas na forma ${var}, em vez de $var
- As variáveis devem sempre ser citadas, especialmente se seu valor pode conter um espaço em branco ou caractere separador: “${var}”
# Correct
greeting="Hello, World!"
echo "${greeting}" # Output: Hello, World!
# Incorrect
greeting=Hello, World!
echo $greeting
Capitalização
- Variáveis de ambiente (exportadas): ${ALL_CAPS}
- Variáveis locais: ${lower_case}
Prefira variáveis locais dentro de funções em vez de variáveis globais
Se precisar de variáveis globais, torne-as somente leitura:
readonly GLOBAL_VAR="Initial value"
GLOBAL_VAR="New value" # This will generate an error
Arrays
Aqui estão algumas boas práticas para trabalhar com arrays no Bash:
# Explicitly declare arrays to enhance code clarity and prevent unexpected behavior
my_array=()
# Initialize an array
my_array=(1 2 3)
# Retrieve third element
${my_array[2]}
# Retrieve all elements
${my_array[@]}
# Retrieve array indices
${!my_array[@]}
# Calculate array size
${#my_array[@]}
# Overwrite 1st element
my_array[0]=3
# Append value(s)
my_array+=(4)
# Save ls output as an array of files
my_array=( $(ls) )
# Retrieve n elements starting at index s
${my_array[@]:s:n}
# Remove an element from an array
unset my_array[2]
# Iterate over array elements
for element in "${my_array[@]}"; do
echo "${element}"
done
# Check if an array is empty
if [[ ${#my_array[@]} -eq 0 ]]; then
echo "Array is empty"
fi
Sempre use a notação de parâmetro longo quando disponível
A notação longa torna o script mais legível, especialmente para comandos menos conhecidos/usados para os quais você não lembra todas as opções.
# Good:
rm --recursive --force -- "${dir}"
# Avoid:
rm -rf -- "${dir}"
Tornando seus scripts mais robustos e resistentes a erros com exit e return
exit
Use códigos de saída ($?) para indicar o sucesso ou falha do script. Convencionalmente, um código de saída 0 indica sucesso, enquanto qualquer valor diferente de zero representa um erro ou falha.
Forneça mensagens de erro significativas ao sair devido a um erro, tornando mais fácil diagnosticar e solucionar problemas.
# Exiting with an error message
if [[ ! -f "${file}" ]]; then
echo "Error: File not found!"
exit 1
fi
return
Use a declaração return para indicar o sucesso ou falha de uma função retornando um código de saída. Semelhante ao comando exit, convencionalmente, um código de saída 0 representa sucesso, enquanto valores diferentes de zero representam erros.
# Using return within a function and an if statement
function my_function() {
if [[ "${var}" = "value" ]]; then
echo "Condition met. Returning..."
return 0
fi
# Rest of the function code
}
Exemplo: Script de Backup Automatizado
Agora que você aprendeu o básico, vamos criar um exemplo mais prático. Neste exemplo, criaremos um script que faz backup automático de um diretório.
!/bin/bash
# Set the backup directory
BACKUP_DIR="/home/user/backup"
# Create the backup directory if it doesn't exist
if [[ ! -d "${BACKUP_DIR}" ]]; then
mkdir "${BACKUP_DIR}"
fi
# Archive the directory and save it to the backup directory
tar --create --gzip --verbose --file "${BACKUP_DIR}/mybackup.tar.gz" /home/user/mydirectory
# Print a success message
echo "Backup complete!"
Este script define o diretório de backup, cria-o se ele não existir, arquiva o diretório e salva-o no diretório de backup. Em seguida, imprime uma mensagem de sucesso.
Encerrando
A escrita de scripts Bash é uma habilidade valiosa que pode ajudá-lo a automatizar tarefas e gerenciar configurações do sistema. Com os passos e exemplo fornecidos neste post do blog, você deve ser capaz de escrever seu primeiro script Bash e começar a explorar o poder da escrita de scripts Bash.”