Operações Essenciais em Shell Script

Comparação de Valores

Sintaxe para Comparação:

Utilize duplos parênteses para comparações numéricas:


(( "$valor1" < "$valor2" ))   # Menor que
(( "$valor1" <= "$valor2" ))  # Menor ou igual
(( "$valor1" > "$valor2" ))   # Maior que
(( "$valor1" >= "$valor2" ))  # Maior ou igual

Comandos para Comparação:


[ "$valor1" -eq "$valor2" ]  # Igual
[ "$valor1" -ne 5 ]          # Diferente
[ "$valor1" -gt 10 ]         # Maior que
[ "$valor1" -ge 8 ]          # Maior ou igual
[ "$valor1" -lt "$valor2" ]  # Menor que
[ "$valor1" -le "$valor2" ]  # Menor ou igual

Exemplo de Configuração:


#!/bin/bash
contagem=$(grep 'SISTEMA-X:' /tmp/config.txt | wc -l)
if [ $contagem -eq 0 ]; then
  cat << CFG >> /tmp/config.txt
###################################
#  APLICATIVO: Nome do sistema
#   RESPONSAVEL_A: Administrador A
#   RESPONSAVEL_B: Administrador B
#   DESCRICAO: Função do equipamento
###################################
CFG
elif [ $contagem -eq 1 ]; then
  echo "Conflito detectado, requer verificação manual"
else
  echo "Configurações duplicadas: $contagem ocorrências"
fi

Verificação de Conteúdo

Diferança entre verificar vazio e zero:


[ -z "$var" ]    # Verifica string vazia
[ "$var" -eq 0 ] # Verifica valor numérico zero

Uso de Aspas e Crases


#!/bin/bash
data_ref=$1
echo '$data_ref'     # Aspas simples: exibe literal
echo "$data_ref"     # Aspas duplas: interpreta variáveis
echo \`date\`         # Crases executam comandos

Regras Principais:

  • Aspas simples: Bloqueiam expansão de variáveis
  • Aspas duplas: Permitem expansão de variáveis
  • Crases: Executam comandos internos

Manipulação de Texto com Sed

Inserção:


sed -i '3i Texto inserido' arquivo.txt  # Antes da linha 3
sed -i '4a Texto após' arquivo.txt     # Após linha 4

Substituição:


sed -i '5c Nova linha' arquivo.txt     # Substitui linha 5
sed -i 's/antigo/novo/g' arquivo.txt   # Substituição global

Exclusão:


sed -i '/padrao/d' arquivo.txt          # Remove linhas
sed -i '2,4d' arquivo.txt               # Remove intervalo

Processamento com Awk e Grep


awk 'NR==1 {print}' arquivo.txt        # Primeira linha
grep 'padrao' arquivo.txt | grep -v '# ' # Filtra comentários

Estruturas de Repetição

Loop Numérico:


declare -i total=0
for ((i=1; i<=5; i++)); do
  total+=$i
done

Iteração em Lista:


for item in elemento1 elemento2; do
  echo $item
done

Proecssamento de Arquivos:


contador=1
for linha in $(grep -n 'TMOUT' perfil.txt); do
  num_linha=$(echo $linha | cut -d: -f1)
  if [ $contador -eq 1 ]; then
    sed -i "${num_linha}s/.*/TMOUT=600/" perfil.txt
  fi
  ((contador++))
done

Tags: Shell Scripting Bash sed awk Comparação

Publicado em 7-11 19:45