Básico
Copy
Ask AI
#!/bin/bash
# Comentário
echo "Hello World"
# Variáveis
name="World"
echo "Hello $name"
# Input
echo "Digite seu nome:"
read username
echo "Olá, $username"
# Arrays
frutas=("maçã" "banana" "laranja")
echo ${frutas[0]} # maçã
echo ${frutas[@]} # Todos
echo ${#frutas[@]} # Tamanho
Condicionais
Copy
Ask AI
# If
if [ $age -ge 18 ]; then
echo "Maior de idade"
fi
# If-else
if [ $status == "OK" ]; then
echo "Sucesso"
else
echo "Falha"
fi
# If-elif
if [ $score -ge 90 ]; then
echo "A"
elif [ $score -ge 80 ]; then
echo "B"
else
echo "C"
fi
# Operadores
# -eq (igual)
# -ne (diferente)
# -gt (maior)
# -lt (menor)
# -ge (maior ou igual)
# -le (menor ou igual)
# -z (string vazia)
# -n (string não vazia)
# -f (arquivo existe)
# -d (diretório existe)
Loops
Copy
Ask AI
# For
for i in {1..5}; do
echo "Número: $i"
done
# For com lista
for file in *.txt; do
echo "Processando: $file"
done
# For com C-style
for ((i=0; i<10; i++)); do
echo $i
done
# While
count=1
while [ $count -le 5 ]; do
echo $count
((count++))
done
# Until
until [ $count -gt 10 ]; do
echo $count
((count++))
done
Funções
Copy
Ask AI
greet() {
echo "Olá, $1!"
}
greet "Mundo"
# Com retorno
add() {
result=$(($1 + $2))
echo $result
}
sum=$(add 5 3)
echo $sum # 8
Arrays
Copy
Ask AI
# Criar array
arr=(one two three)
# Acessar elementos
echo ${arr[0]} # one
echo ${arr[@]} # Todos
echo ${#arr[@]} # Tamanho
# Adicionar elementos
arr+=("four")
# Loop
for item in "${arr[@]}"; do
echo $item
done
# Associative array (Bash 4+)
declare -A capitals
capitals[BR]="Brasília"
capitals[US]="Washington"
echo ${capitals[BR]}
Strings
Copy
Ask AI
str="Hello World"
# Tamanho
echo ${#str}
# Substring
echo ${str:6} # World
echo ${str:0:5} # Hello
# Replace
echo ${str/World/Bash} # Hello Bash
echo ${str//o/O} # HellO WOrld
# Lower/Upper
echo ${str,,} # hello world
echo ${str^^} # HELLO WORLD
Arquivos
Copy
Ask AI
# Ler arquivo linha por linha
while IFS= read -r line; do
echo "$line"
done < "file.txt"
# Redirecionar output
command > output.txt 2>&1
# Testar arquivo
if [ -f "file.txt" ]; then
echo "Arquivo existe"
fi
# Testar
# -e (existe)
# -f (arquivo regular)
# -d (diretório)
# -r (legível)
# -w (gravável)
# -x (executável)
Case
Copy
Ask AI
case $variable in
start)
echo "Iniciando..."
;;
stop)
echo "Parando..."
;;
restart)
echo "Reiniciando..."
;;
*)
echo "Comando desconhecido"
;;
esac
Math
Copy
Ask AI
# Aritmética
echo $((2 + 3)) # 5
echo $((10 - 3)) # 7
echo $((4 * 2)) # 8
echo $((10 / 3)) # 3
echo $((10 % 3)) # 1
# Operações com decimais
echo "scale=2; 10/3" | bc
Exemplo Prático
Copy
Ask AI
#!/bin/bash
# Script de backup
set -euo pipefail
BACKUP_DIR="/backup"
DATE=$(date +%Y%m%d_%H%M%S)
SOURCE_DIR="/data"
RETENTION_DAYS=7
echo "Iniciando backup..."
# Criar diretório de backup
mkdir -p "$BACKUP_DIR"
# Compactar arquivos
tar -czvf "$BACKUP_DIR/backup_$DATE.tar.gz" "$SOURCE_DIR"
# Listar backups
echo "Backups existentes:"
ls -lh "$BACKUP_DIR"
# Remover backups antigos
find "$BACKUP_DIR" -name "backup_*.tar.gz" -mtime +$RETENTION_DAYS -delete
echo "Backup concluído com sucesso!"
Debug
Copy
Ask AI
# Modos de debug
set -x # Print commands
set -v # Print input
set -e # Exit on error
set -u # Exit on unset variable
set -o pipefail
# Ou na primeira linha
#!/bin/bash -x