# Definindo variáveis sem espaços
usuario=carlos
# Definindo variáveis com espaços, usando aspas duplas
nome_completo="Carlos Silva"
# Exibindo o valor da variável
echo $nome_completo
# Armazenando a saída de um comando em uma variável
lista_arquivos=`ls`
echo $lista_arquivos
Fundamantos de Scripts Shell
Exemplo para exibir o diretório atual:
#!/bin/bash
dir_atual=`pwd`
echo "O diretório atual é: $dir_atual"
Para exectuar, salve como mostra_dir.sh e use chmod +x mostra_dir.sh ou execute com bash mostra_dir.sh.
Exemplo para contar arquivos em um diretório:
#!/bin/bash
cd /etc
contagem=`ls -l | wc -l`
echo "Existem $contagem arquivos neste diretório."
Entrada de Dados com o Comando read
Entrada de uma variável:
# Solicitar um nome
read -p "Digite seu nome: " nome_usuario
echo "Olá, $nome_usuario!"
Entrada de múltiplas variáveis:
read -p "Digite primeiro e segundo nome: " primeiro segundo
echo "Primeiro: $primeiro, Segundo: $segundo"
Exemplo interativo: contar arquivos em um diretório fornecido pelo usuário.
#!/bin/bash
read -p "Informe o caminho do diretório: " caminho_dir
if [ -d "$caminho_dir" ]; then
total_arquivos=`ls -l "$caminho_dir" | wc -l`
echo "O diretório $caminho_dir contém $total_arquivos itens."
else
echo "Diretório não encontrado."
fi
Pasagem de Parâmetros para Scripts
Variáveis especiais:
$1– primeiro parâmetro$0– nome do script$@– todos os parâmetros$#– número de parâmetros
#!/bin/bash
echo "Script: $0"
echo "Parâmetros recebidos: $@"
echo "Quantidade de parâmetros: $#"
echo "Primeiro parâmetro: $1"
echo "Terceiro parâmetro: $3"
Execução: ./parametros.sh 10 20 30
Exemplo prático: contar arquivos usando um parâmetro como diretório.
#!/bin/bash
if [ -d "$1" ]; then
total=`ls -l "$1" | wc -l`
echo "Total de arquivos em $1: $total"
else
echo "Diretório inválido."
fi
Redirecionamento de Saída
# Sobrescrever conteúdo de um arquivo
ls -l > listagem.txt
# Adicionar conteúdo ao final do arquivo
echo "Nova entrada" >> listagem.txt
Estrutura Condicional if...else
Sintaxe básica:
if [ condição ]; then
comandos
else
comandos
fi
Exemplo: verificar se um diretório está vazio.
#!/bin/bash
read -p "Diretório para verificar: " diretorio
conteudo=`ls "$diretorio"`
if [ -z "$conteudo" ]; then
echo "O diretório está vazio."
else
echo "O diretório contém arquivos."
fi
Exemplo: validação simples de login.
#!/bin/bash
read -p "Usuário: " usr
read -sp "Senha: " senha
echo
if [ "$usr" = "admin" ] && [ "$senha" = "senha123" ]; then
echo "Autenticação bem-sucedida."
else
echo "Falha na autenticação."
fi
Estrutura Condicional if...elif...else
Exemplo: classificar notas de alunos.
#!/bin/bash
read -p "Insira a nota (0-100): " nota
if [ "$nota" -ge 90 ] && [ "$nota" -le 100 ]; then
echo "Desempenho excelente."
elif [ "$nota" -ge 80 ]; then
echo "Bom desempenho."
elif [ "$nota" -ge 70 ]; then
echo "Desempenho mediano."
elif [ "$nota" -ge 60 ]; then
echo "Aprovado com ressalvas."
else
echo "Reprovado."
fi
Estrutura de Seleção case
Exemplo: menu de opções.
#!/bin/bash
read -p "Escolha uma opção (A, B ou C): " opcao
case "$opcao" in
"A")
echo "Opção A selecionada: Computador"
;;
"B")
echo "Opção B selecionada: Impressora"
;;
"C")
echo "Opção C selecionada: Monitor"
;;
*)
echo "Opção inválida."
;;
esac
Exemplo: classificar faixas numéricas.
#!/bin/bash
read -p "Avalie o serviço (0-9): " avaliacao
case "$avaliacao" in
[0-3])
echo "Insatisfeito."
;;
[4-6])
echo "Satisfeito."
;;
[7-9])
echo "Muito satisfeito."
;;
esac
Laços de Repetição
Laço for com lista e comando seq:
#!/bin/bash
for i in `seq 1 5 20`; do
echo "Valor: $i"
done
Exemplo: somar números de 1 a 100 usando while.
#!/bin/bash
contador=1
soma=0
while [ $contador -le 100 ]; do
soma=$((soma + contador))
contador=$((contador + 1))
done
echo "Soma total: $soma"
Operadores Lógicos e Testes de Arquivos
Operadores de comparação numérica: -eq (igual), -ne (diferente), -gt (maior), -lt (menor).
Operadores lógicos: -a (e), -o (ou), ! (negação).
Testes para arquivos e diretórios: -e (existe), -f (é arquivo), -d (é diretório), -r (legível), -w (gravável), -x (executável).
Exemplo: verificar se um caminho é arquivo ou diretório.
#!/bin/bash
read -p "Insira um caminho: " caminho
if [ -z "$caminho" ]; then
echo "Entrada vazia."
elif [ -d "$caminho" ]; then
echo "É um diretório."
elif [ -f "$caminho" ]; then
echo "É um arquivo."
else
echo "Caminho não reconhecido."
fi
Funções em Shell
Definição e chamada de funções.
#!/bin/bash
saudacao() {
echo "Bem-vindo ao sistema!"
}
saudacao
Exemplo: função para somar dois números.
#!/bin/bash
soma() {
resultado=$(($1 + $2))
echo "Resultado: $resultado"
}
read -p "Primeiro número: " num1
read -p "Segundo número: " num2
soma $num1 $num2
Exemplo: função para criar arquivo em um diretório.
#!/bin/bash
criar_arquivo() {
local dir="$1"
cd "$dir" || return
read -p "Nome do arquivo: " nome_arq
if [ -e "$nome_arq" ]; then
echo "Arquivo já existe."
else
touch "$nome_arq"
echo "Arquivo $nome_arq criado com sucesso."
fi
}
read -p "Diretório alvo: " dir_alvo
if [ -d "$dir_alvo" ]; then
criar_arquivo "$dir_alvo"
else
echo "Diretório não encontrado."
fi