===== 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".