Table of Contents

Nível Básico

1. Criação de Scripts Simples

    #!/bin/bash
    echo "Este é um script básico"
 
  1. 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"
 
  1. 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

    #!/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
 
  1. 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
 
  1. 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
 
  1. 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
 
  1. 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"
 
  1. 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."
 
  1. Descrição: Este script exibe o número total de parâmetros fornecidos quando o script é executado.
    #!/bin/bash
    echo "Todos os parâmetros: $@"
 
  1. 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"
 
  1. 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: $?"
 
  1. 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]}"
 
  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
 
  1. 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
 
  1. 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
 
  1. 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
 
  1. 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))"
 
  1. 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
 
  1. 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
 
  1. 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
 
  1. 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
 
  1. 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/
 
  1. 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
 
  1. 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
 
  1. 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”.
1)