No
bash, quando você usa um cifrão ($) seguido por um nome de variável, o
shell expande a variável com o seu valor. Este recurso é chamado de "expansão de parâmetros".
Mas a expansão de parâmetros tem muitas outras formas que permitem expandir um parâmetro e modificar o valor, ou a substituir outros valores em processo de expansão.
Nesta dica, vamos ver como aplicar o conceito de expansão de parâmetros para operações de manipulação de strings.
Tamanho de uma string
Para sabermos o tamanho da string, devemos colocar o caractere "#" no processo de expansão de parâmetros:
${#string}
Vejamos um exemplo abaixo:
#!/bin/bash
VAR="Bem vindo ao HOW TO
Linux"
echo ${#VAR}
Devemos ter como saída o tamanho da string, que no caso, é 25.
Extraindo uma substring
O bash nos fornece diversos métodos para fazermos a extração de substrings, a primeira é mais simples, fornecendo apenas a string e a posição de início:
${string:posicao}
E também podemos fornecer o tamanho da substring:
${string:posicao:tamanho}
Vejamos agora um exemplo de utilização:
#!/bin/bash
STR="HOW TO Linux"
echo ${STR:0:6}
echo ${STR:7}
Devemos ter uma saída como esta:
HOW TO
Linux
Procurando e substituindo Strings
O bash também suporta fazer o famoso "find and replace". E temos essa opção de dois modos, substituindo a primeira ocorrência, e substituindo todas as ocorrências. Vejamos:
Substituindo a primeira ocorrência:
${string/procura/substitui}
Substituindo todas as ocorrências:
${string//pesquisa/substitui}
Vejamos agora, exemplos:
#! /bin/bash
ARQ="bash.string.txt"
echo "Depois da Substituição:" ${ARQ/str*./operacao.}
Devemos ter uma saída como essa:
Depois da Substituição: bash.operacao.txt
Agora, substituindo todas as ocorrências:
#! /bin/bash
STR="Caminho do bash é /bin/bash"
echo "Depois de Substituir:" ${STR//bash/sh}
Devemos ter uma saída como essa:
Depois de Substituir: Caminho do sh é /bin/sh
Essa dica foi retirada do meu blog:
Espero que gostem.
Abraços!