Técnicas de manipulação de strings

ShellBeginner
Pratique Agora

Introdução

Ao escrever scripts, você frequentemente precisa modificar textos armazenados em variáveis. Talvez seja necessário extrair uma parte específica de um caminho de arquivo, substituir uma palavra em uma configuração ou garantir que uma variável tenha um valor válido mesmo quando o usuário não fornecer um.

O Bash oferece ferramentas integradas e poderosas para essas tarefas, chamadas expansão de parâmetros.

Esse é um conceito importante do shell porque permite transformar textos sem executar comandos adicionais. Em scripts de shell, usar recursos integrados costuma ser mais rápido e simples do que chamar utilitários externos para cada pequena alteração.

Neste laboratório, você aprenderá três técnicas essenciais de manipulação de strings:

  1. Fatiamento: extração de uma parte específica de uma string, como os 5 primeiros caracteres.
  2. Substituição: localização e substituição de texto dentro de uma string.
  3. Valores padrão: atribuição automática de um valor alternativo quando uma variável não existe ou está vazia.

Definir uma variável de string

Comece criando uma variável que contenha um caminho de arquivo longo. Usaremos essa string para praticar nossas técnicas de manipulação.

O tratamento de strings aparece em todo trabalho com shell, porque muitas informações do sistema são representadas como texto: caminhos, nomes de usuário, nomes de host, valores de configuração e saída de comandos. Aprender a transformar textos sem sair do shell aumenta bastante a produtividade.

Crie um novo script chamado string_lab.sh.

Abra string_lab.sh e adicione o código a seguir:

nano string_lab.sh
#!/bin/bash

## Define a variable with a file path
FILE_PATH="/usr/local/share/applications/config.xml"

echo "Original Path: $FILE_PATH"

Salve (Ctrl+O, Enter) e saia (Ctrl+X).

Torne o script executável e execute-o para preparar o ambiente:

chmod +x string_lab.sh
./string_lab.sh

Você deverá ver o caminho completo impresso na tela. Agora, vamos começar a manipular essa string.

Extrair uma substring (fatiamento)

Às vezes, você precisa apenas de uma parte específica de uma string, como os primeiros caracteres. Isso é chamado de fatiamento.

A sintaxe do fatiamento é: ${Variable:Offset:Length}

  • Offset: posição onde começar; 0 corresponde ao primeiro caractere.
  • Length: quantidade de caracteres a extrair.

Essa operação usa expansão de parâmetros, o que significa que o Bash transforma internamente o valor da variável antes de executar o comando. Nenhum utilitário adicional, como cut, é necessário para uma operação simples de substring.

Queremos extrair os 5 primeiros caracteres (/usr/) de FILE_PATH.

Abra string_lab.sh:

nano string_lab.sh

Adicione o código a seguir no final do arquivo:

## Slicing: Start at index 0, take 5 characters
## Syntax: ${Variable : Start : Length}
SLICE=${FILE_PATH:0:5}

echo "First 5 characters: $SLICE"

Salve e saia. Execute o script:

./string_lab.sh

Resultado:

First 5 characters: /usr/

O Bash extraiu exatamente 5 caracteres começando pelo início da string.

Substituir uma substring

Essa técnica funciona como o recurso “Localizar e substituir” de um editor de texto.

A sintaxe é: ${Variable/Find/Replace}.

Suponha que você queira alterar a pasta share para bin no caminho do arquivo.

Abra string_lab.sh:

nano string_lab.sh

Adicione este código:

## Replacement: Find 'share', replace with 'bin'
## Syntax: ${Variable / Pattern / Replacement}
NEW_PATH=${FILE_PATH/share/bin}

echo "Modified Path: $NEW_PATH"

Salve e saia. Execute o script:

./string_lab.sh

Resultado:

Modified Path: /usr/local/bin/applications/config.xml

O shell localizou a primeira ocorrência de share e a substituiu por bin.

Essa técnica é útil para manipular caminhos, limpar nomes de arquivos e fazer alterações rápidas em configurações. Como a operação ocorre dentro do próprio Bash, ela geralmente é mais leve e fácil de ler do que executar um comando separado de processamento de texto para uma substituição simples.

Fornecer um valor padrão

Os scripts frequentemente dependem de entradas ou variáveis de ambiente, como USER ou HOME. Se essas variáveis não existirem, o script poderá falhar ou apresentar um comportamento imprevisível.

Você pode fornecer um valor padrão para ser usado quando a variável não estiver definida ou estiver vazia.

A sintaxe é: ${Variable:-DefaultValue}.

Abra string_lab.sh:

nano string_lab.sh

Adicione este código. Observe que USER_NAME não foi definida no nosso script e, portanto, está atualmente não definida.

## Default Value: If USER_NAME is missing, use 'guest'
## Syntax: ${Variable :- Default}
CURRENT_USER=${USER_NAME:-guest}

echo "Current User: $CURRENT_USER"

Salve e saia. Execute o script:

./string_lab.sh

Resultado:

Current User: guest

Como USER_NAME não foi definida, o Bash tratou a ausência de dados usando o valor alternativo guest. Isso garante que o script continue sendo executado normalmente.

Esse padrão é especialmente útil em automações, nas quais a entrada pode vir de variáveis de ambiente ou de argumentos opcionais. Um valor padrão adequado pode tornar o script mais seguro e previsível quando alguns dados estiverem ausentes.

Resumo

Neste laboratório, você aprendeu a manipular strings diretamente no Bash usando expansão de parâmetros:

  1. Fatiamento (${var:offset:length}): extração de substrings precisas.
  2. Substituição (${var/old/new}): modificação do conteúdo de uma variável.
  3. Valores padrão (${var:-default}): tratamento adequado de variáveis ausentes.

Essas técnicas permitem escrever scripts robustos que processam textos com eficiência, sem precisar de ferramentas externas como sed ou awk para tarefas simples.