===== Nível Básico =====
=== 1. Criação de Scripts Simples ===
* **echo** - Exibe uma mensagem no terminal.
- Exemplo de uso: echo "Olá, mundo!"
- Descrição: Exibe a mensagem ''Olá, mundo!'' no terminal, um exemplo clássico de saída em programação.
* **shebang (`#!/bin/bash`)** - Define o interpretador de comandos para um script.
- Exemplo de uso:
#!/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 ===
* **chmod +x** - Torna um script executável.
- Exemplo de uso: chmod +x meu_script.sh
- Descrição: Dá permissão de execução ao script ''meu_script.sh'', permitindo que ele seja executado diretamente.
* **./meu_script.sh** - Executa um script no diretório atual.
- Exemplo de uso: ./meu_script.sh
- Descrição: Executa o script ''meu_script.sh'' no diretório atual, mostrando a saída no terminal.
=== 3. Variáveis Simples no Script ===
* **variáveis** - Definição e uso de variáveis simples.
- Exemplo de uso:
#!/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''.
===== Nível Intermediário =====
=== 1. Estruturas Condicionais em Scripts ===
* **if** - Estrutura condicional básica.
- Exemplo de uso:
#!/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` ===
* **for** - Laço que percorre uma lista de valores.
- Exemplo de uso:
#!/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.
* **for com arquivos** - Itera sobre arquivos em um diretório.
- Exemplo de uso:
#!/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` ===
* **while** - Executa um laço enquanto a condição for verdadeira.
- Exemplo de uso:
#!/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 ===
* **$1, $2, ...** - Acessa parâmetros passados ao script.
- Exemplo de uso:
#!/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.
* **$#** - Exibe o número de parâmetros.
- Exemplo de uso:
#!/bin/bash
echo "Você forneceu $# parâmetros."
- Descrição: Este script exibe o número total de parâmetros fornecidos quando o script é executado.
* **$@** - Acessa todos os parâmetros de uma vez.
- Exemplo de uso:
#!/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 ===
* **Definição de função** - Cria funções reutilizáveis dentro de scripts.
- Exemplo de uso:
#!/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!".
* **Função com retorno de valor** - Retorna códigos de status de funções.
- Exemplo de uso:
#!/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 ===
* **Definição de array** - Manipula listas de dados em um array.
- Exemplo de uso:
#!/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.
* **Iteração sobre arrays** - Usa um laço para percorrer arrays.
- Exemplo de uso:
#!/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 ===
* **Redirecionamento de entrada e saída** - Manipula arquivos com redirecionamento.
- Exemplo de uso:
#!/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.
* **Leitura de arquivos linha por linha** - Processa arquivos em um loop.
- Exemplo de uso:
#!/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 ===
* **Operadores lógicos** - Usa operadores avançados em condições.
- Exemplo de uso:
#!/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.
* **Operadores aritméticos** - Realiza operações matemáticas.
- Exemplo de uso:
#!/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 ''$((...))'' para calcular o valor das expressões.
===== Nível Especializado =====
=== 1. Controle de Fluxo Avançado com `case` ===
* **case** - Estrutura condicional para múltiplos casos.
- Exemplo de uso:
#!/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` ===
* **trap** - Captura sinais e executa comandos ao receber um sinal.
- Exemplo de uso:
#!/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 ===
* **Agendamento de scripts** - Usa o ''cron'' para executar scripts periodicamente.
- Exemplo de uso:
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` ===
* **awk** - Ferramenta poderosa para processamento de texto.
- Exemplo de uso:
#!/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` ===
* **xargs** - Executa comandos em paralelo a partir de uma lista.
- Exemplo de uso:
#!/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 ===
* **Funções com parâmetros e valores padrão** - Define valores padrão em funções.
- Exemplo de uso:
#!/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` ===
* **mail** - Envia alertas de script por email.
- Exemplo de uso:
#!/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".