Truques para tratamento de variáveis em shell script

Publicado por Marcos Paulo Ferreira em 09/09/2006

[ Hits: 93.580 ]

Blog: http://daemoniolabs.wordpress.com

 


Truques para tratamento de variáveis em shell script



As variáveis do sistema servem para armazenar algum valor (como toda variável), mas existem alguns recursos interessantes e úteis no modo de usar tais variáveis. O que aprendemos em alguns tutoriais, é que para declarar uma variável do sistema, fazemos:

NOME="VALOR" # Aqui podemos usar valores de outras variáveis
NOME='VALOR' # NOME terá o valor igual a VALOR
NOME=`COMANDO` # NOME terá o valor da saída de comando

Isto é o básico, agora teremos algumas coisas mais interessantes:

1. Retirar parte final de uma string

VAR="minha_foto.jpeg"
echo ${VAR%.jpeg}

Saída: minha_foto

Como podemos ver, ".jpeg" será excluído. Indicamos o que será excluído depois do caracter '%'.

2. Retirar da variável a parte inicial do valor dado

VAR="http://www.vivaolinux.com.br"
echo ${VAR#http://}

Saída: www.vivaolinux.com.br

Indicamos o que será excluído depois do caracter '#'

3. Mostrar tudo depois de uma certa posição

VAR="http://www.g00gle.com"
echo ${VAR:7}

Saída: www.g00gle.com

Depois do ':' indicamos o índice. Como é em C, o primeiro índice é 0, o segundo é 2 ..., o oitavo é 7 ... etc.

4. Mostrar entre alguns caracteres

VAR="123456789"
echo ${VAR:2:5}

Saída: 34567

Primeiro, faz-se o índice 2, que começa no caracter '3'. No índice 5, a contagem já começa no índice 2 (5 caracteres a partir do índice 2), aí morre no caracter '7'.

5. Elimina o caracter mostrado e tudo a ESQUERDA

VAR="daemonio@vivaolinux"
echo ${VAR#*@}

Saída: vivaolinux

Bom, aqui indicamos o caracter a ser deletado e tudo a sua esquerda, depois da string "#*".

6. Elimina o caracter mostrado e tudo a DIREITA

Como o mundo não é feito somente de canhotos,

VAR="daemonio@vivaolinux"
echo ${VAR%@*}

Saída: daemonio

Já aqui, indicamos o caracter a ser deletado e tudo a sua direita, entre a string "%*".

7. Excluir até um certo valor

Esta daqui é igual ao de cima, só que podemos indicar strings ao invés de somente um caracter.

EXC=":senha"
VAR="root:senha:/bin/bash"

echo ${VAR%%$EXC*}

Saída: root

O que será excluído tem que ficar entre "%%" e '*'.

8. Excluir de um certo valor até o final

Agora é ao contrário, exclui até o final.

EXC="senha:"
VAR="root:senha:/bin/bash"

echo ${VAR##*$EXC}

Saída: /bin/bash

O que será excluído deve ficar depois do "##*".

9. Troca-troca (de strings :-)

Isto na verdade funfa que nem o comando sed.

VAR="c1:c2:c3"
echo ${VAR/:/x}

Saída: c1xc2:c3

Troca a primeira ocorrência de ':' por 'x', para trocar tudo:

echo ${VAR//:/x}

Usa-se duas barras.

Nada impede de trocar por strings:

echo ${VAR//:/-CC-}

Saída: c1-CC-c2-CC-c3

10. Mostrar o comprimento da variável:

VAR="tenho 19 caracteres"
echo ${#VAR}

Saída: 19

11. Listar nomes de variáveis

Para listar todas as variáveis de seu sistema que contenha tal nome, faça:

echo ${!va*}

Mostrará todas as variáveis que começam com "va". Aí pode sair: vaca, vacuo, vassoura, etc.

12. Um ou outro

echo ${VAR:-"eu não existo"}

Saída: eu não existo

Se VAR for nula, mostra "eu não existo", se não for nula, mostra o conteúdo dela.

VAR="eu existo"
echo ${VAR:-"eu não existo"}

Saída: eu existo

Agora, VAR não é nula, por isto mostra o conteúdo dela.

Bom, isto é tudo pessoal!

Referência:
[]'s
Daemonio

Outras dicas deste autor

Comando eval

Leitura recomendada

Shell Script - Imprimindo nome da própria função em execução

Como lidar com variáveis retornadas pelo Expect - removendo CR do fim de linha

Nome de arquivo com espaço dentro de variáveis

Comando cd + CDPATH - Facilitando a navegação de arquivos

Somar variáveis nos shells BASH e sh

  

Comentários
[1] Comentário enviado por K1LL -9 em 09/09/2006 - 22:25h

Muito legal ...
Eu aqui as vezes quebrando mó loça pra fazer um shell ....
10 voltas e se resolve em uma linha bem usada.
Por enquanto não posso pagar cursos de especialização e o VOL é a minha escola.
kkkkk
Vai ser muito útil .

[2] Comentário enviado por FelipeAbella em 09/09/2006 - 23:24h

Só um erro de escrita:
"Depois do ':' indicamos o índice. Como é em C, o primeiro índice é 0, o segundo é 2 ..., o oitavo é 7 ... etc. "
Correção:
"Depois do ':' indicamos o índice. Como é em C, o primeiro índice é 0, o segundo é (---> 1 <---) ..., o oitavo é 7 ... etc. "

[3] Comentário enviado por jorge_piotto em 28/10/2009 - 17:07h

que joia ta ai o conselho que faltava!!
bele!!
boa dica!



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts