Nível Básico
1. Criação de Scripts Simples
#!/bin/bash
echo "Este é um script básico"
Descrição: A primeira linha de um script Bash geralmente é um shebang, que indica qual interpretador de comandos deve ser usado para executar o script. Nesse exemplo, o comando echo será executado.
2. Executando Scripts Simples
3. Variáveis Simples no Script
#!/bin/bash
nome="João"
echo "Olá, $nome"
Descrição: Este script define uma variável chamada nome e a utiliza na linha de comando para exibir a mensagem Olá, João.
1. Estruturas Condicionais em Scripts
#!/bin/bash
numero=10
if [ $numero -gt 5 ]; then
echo "O número é maior que 5."
else
echo "O número é menor ou igual a 5."
fi
Descrição: Este script usa uma estrutura if para verificar se o valor da variável numero é maior que 5. Dependendo do resultado, exibe a mensagem apropriada.
2. Laços de Repetição com `for`
#!/bin/bash
for i in 1 2 3 4 5; do
echo "Número: $i"
done
Descrição: O laço for percorre uma lista de números de 1 a 5 e exibe cada número no terminal.
#!/bin/bash
for arquivo in *.txt; do
echo "Processando $arquivo"
done
Descrição: O laço for itera sobre todos os arquivos com extensão .txt no diretório atual e exibe o nome de cada um.
3. Estrutura de Repetição com `while`
#!/bin/bash
contador=1
while [ $contador -le 5 ]; do
echo "Contador: $contador"
contador=$((contador + 1))
done
Descrição: O laço while repete até que o valor da variável contador seja maior que 5. O valor do contador é incrementado a cada iteração.
4. Passagem de Parâmetros para Scripts
#!/bin/bash
echo "Primeiro parâmetro: $1"
echo "Segundo parâmetro: $2"
Descrição: Este script exibe o valor dos parâmetros passados ao ser executado, usando $1 e $2 para acessar os primeiros dois argumentos.
#!/bin/bash
echo "Você forneceu $# parâmetros."
Descrição: Este script exibe o número total de parâmetros fornecidos quando o script é executado.
#!/bin/bash
echo "Todos os parâmetros: $@"
Descrição: Exibe todos os parâmetros fornecidos ao script de uma vez só, útil para processar uma lista de argumentos.
Nível Avançado
1. Funções em Scripts
#!/bin/bash
saudacao() {
echo "Olá, $1!"
}
saudacao "João"
Descrição: A função saudacao recebe um argumento e o utiliza dentro da função para exibir uma mensagem. Nesse caso, exibe “Olá, João!”.
#!/bin/bash
soma() {
resultado=$(( $1 + $2 ))
return $resultado
}
soma 3 5
echo "Resultado: $?"
Descrição: A função soma realiza uma soma entre dois números e retorna o resultado, que pode ser acessado com a variável especial $? após a execução da função.
2. Trabalhando com Arrays em Scripts
#!/bin/bash
frutas=("Maçã" "Banana" "Laranja")
echo "Fruta favorita: ${frutas[1]}"
Descrição: Este script define um array de frutas e exibe a segunda fruta da lista, “Banana”, usando o índice do array.
#!/bin/bash
frutas=("Maçã" "Banana" "Laranja")
for fruta in "${frutas[@]}"; do
echo "Fruta: $fruta"
done
Descrição: O laço percorre o array de frutas e exibe cada item, útil para trabalhar com listas de dados em scripts.
3. Manipulação de Arquivos em Scripts
#!/bin/bash
echo "Texto para arquivo" > arquivo.txt
cat < arquivo.txt
Descrição: O script redireciona a saída do comando echo para um arquivo usando >, e depois lê o conteúdo do arquivo com cat usando redirecionamento de entrada.
#!/bin/bash
while IFS= read -r linha; do
echo "Linha: $linha"
done < arquivo.txt
Descrição: Este script lê o arquivo arquivo.txt linha por linha e exibe cada uma no terminal, usando um loop while e redirecionamento de entrada.
4. Operadores Avançados
#!/bin/bash
a=10
b=20
if [[ $a -lt 15 && $b -gt 15 ]]; then
echo "Ambas as condições são verdadeiras."
fi
Descrição: Usa o operador lógico && para combinar duas condições. O script verifica se a é menor que 15 e b é maior que 15, e só executa a ação se ambas as condições forem verdadeiras.
#!/bin/bash
num1=10
num2=5
echo "Soma: $((num1 + num2))"
echo "Multiplicação: $((num1 * num2))"
Descrição: O script realiza operações aritméticas, como soma e multiplicação, usando a sintaxe
$1) para calcular o valor das expressões.
Nível Especializado
1. Controle de Fluxo Avançado com `case`
#!/bin/bash
opcao="b"
case $opcao in
a) echo "Opção A selecionada";;
b) echo "Opção B selecionada";;
c) echo "Opção C selecionada";;
*) echo "Opção inválida";;
esac
Descrição: O comando case permite selecionar uma ação com base no valor de uma variável, oferecendo uma estrutura mais limpa que múltiplos if para lidar com várias opções.
2. Controle de Execução com `trap`
#!/bin/bash
trap "echo 'Ctrl+C foi pressionado! Saindo...'; exit" SIGINT
while true; do
echo "Pressione Ctrl+C para sair..."
sleep 1
done
Descrição: O comando trap captura o sinal SIGINT (gerado ao pressionar Ctrl+C) e executa um comando personalizado antes de encerrar o script.
3. Automação com `cron` e Scripts Bash
crontab -e
# Adicione a seguinte linha para executar o script todos os dias às 3h da manhã:
0 3 * * * /caminho/para/meu_script.sh
Descrição: O cron é uma ferramenta de automação que permite agendar a execução de scripts em intervalos regulares. Nesse exemplo, o script será executado diariamente às 3h da manhã.
4. Processamento de Arquivos com `awk`
#!/bin/bash
awk '{print $1, $3}' arquivo.txt
Descrição: Este script usa o awk para processar o arquivo arquivo.txt e exibe a primeira e a terceira coluna de cada linha, útil para manipular dados estruturados em arquivos de texto.
5. Paralelização de Tarefas com `xargs`
#!/bin/bash
cat lista_arquivos.txt | xargs -n 1 -P 4 cp {} /destino/
Descrição: O comando xargs lê uma lista de arquivos de lista_arquivos.txt e executa o comando cp em até 4 processos paralelos (-P 4), copiando os arquivos para o diretório /destino/.
6. Funções Avançadas com Parâmetros Opcionais
#!/bin/bash
saudacao() {
nome=${1:-"Visitante"}
echo "Olá, $nome!"
}
saudacao "João"
saudacao
Descrição: Esta função define um valor padrão para o parâmetro nome. Se nenhum argumento for passado ao chamar a função, ela exibirá “Olá, Visitante!”.
7. Monitoramento e Alerta com `mail`
#!/bin/bash
if [ ! -f /var/log/arquivo.log ]; then
echo "Arquivo de log não encontrado!" | mail -s "Alerta: Falha no script" usuario@dominio.com
fi
Descrição: Se o arquivo de log não for encontrado, o script envia um alerta por email usando o comando mail, com o assunto “Alerta: Falha no script”.