Truques para tratamento de variáveis em shell script

Publicado por Marcos Paulo Ferreira em 09/09/2006

[ Hits: 94.049 ]

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

Hora no prompt do terminal

Números aleatórios em shell script

Como exibir números com um largura fixa de caracteres, complentando com zeros a esquerda

Atendimento ou suporte remoto em estações de trabalho via VNC

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

  

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