Postagem em destaque

Criando bot do Telegram em Shell script com ShellBot

Expansão de Variáveis

Variável é um objeto com uma posição na memória que podemos referencia-la por um nome, que chamados de identificadores. Usamos as variáveis para armazenar valores ou expressões que utilizaremos no decorrer do código onde elas ficam “visíveis’ durante a execução.
Como em outras linguagens de programação, a variável em Shell possui recursos bem interessantes que chamamos de Expansão de Variáveis, que utilizando esses recursos, podemos manipular a expressão armazenada sem precisar utilizar comandos externos. Para ativar o modo de expansão é necessário utilizar ‘${}’ com o identificador da variável. 
Exemplo: ${var..}
O identificador 'msg' é o nome da minha variável que irei utilizar no decorrer do post.


Antes de tudo, precisamos armazenar alguma coisa na variável.


msg="Aprendendo Shell Script, porque Shell é vida."
# Imprimindo conteúdo
 
echo $msg
Aprendendo Shell Script, porque Shell é vida.

Show !!! Continuemos então.

1.  ${var:N}

Retorna uma subcadeia de caracteres a partir da posição 'N' até o final.

1.1 Exemplo
Imprimindo a partir da letra 'o' até o fim.


echo ${msg:9}
Aprendendo Shell Script, porque Shell é vida. 

Se vocẽ parar para contar, irá perceber que a letra 'o' está na posição de número 10 e não 9; mas por quê isso? Porque o primeiro elemento inicia a partir da posição 0 e não 1.

0  1  2  3  4  5  6  7  8  9
A  p  r  e  n  d  e  n  d  o

2.  ${var:N:M}

Retorna uma subcadeia de caracteres a partir da posição 'N' com 'M' comprimento. 

2.1 Exemplo

Imprimindo os 12 caracteres consecutivos a partir da posição 11.

echo ${msg:11:12} 
Shell Script

 

3.  ${var: -N}

Retorna uma subcadeia de caracteres com os últimos 'N' caracteres.

3.1 Exemplo

Imprimindo a última palavra.

echo ${msg: -5} 
vida.

Observação: O espaçamento entre os sinais de ':' e '-' é necessário.

4.  ${var: -N: M}

Retorna uma subcadeia de caracteres com os últimos 'N' caracteres com 'M' comprimento.

4.1 Exemplo

Imprimindo a letra 'v' da palavra 'vida'.

echo ${msg: -5:1} 
v

5.  ${var: -N: -M}

Retorna uma subcadeia de caracteres com os últimos 'N' caracteres menos 'M' comprimento.

5.1 Exemplo

Imprimindo a palavra vida removendo as duas últimas letras.

echo ${msg: -5: -2} 
vid

6.  ${var:N: -M}

Retorna uma subcadeia de caracteres a partir da posição 'N' menos 'M' comprimento.

6.1 Exemplo

Imprimindo da palavra 'Shell' em diante, exceto os últimos 5 caracteres.

echo ${msg:10: -5} 
Shell Script, porque Shell é


7.  ${var/exp1/exp2}

Retorna uma sub cadeia de caracteres substituindo 'exp1' por 'exp2' uma vez.

7.1 Exemplo

Trocando a primeira palavra 'Shell' por 'Java'

echo ${msg/Shell/Java}
Aprendendo Java Script, porque Shell é vida

8.  ${var//exp1/exp2}

Retorna uma sub cadeia de caracteres substituindo 'exp1' por 'exp2' recursivamente.

8.1 Exemplo

Trocando todas as palavras 'Shell' por 'Java'

echo ${msg//Shell/Java} 
Aprendendo Java Script, porque Java é vida.

9.  ${var/#exp1/exp2}

Retorna uma subcadeia de caracteres substituindo a expressão iniciada com 'exp1' por 'exp2'.

9.1 Exemplo

Tentando substituir a palavra 'Shell'.

echo ${msg/#Shell/Java} 
Aprendendo Shell Script, porque Shell é vida.

Apesar da palavra ‘Shell’ existir, nada aconteceu, porque informamos ao comando que substitui-se somente a palavra ‘Shell’ que estivesse no inicio da frase e como a palavra não esta no inicio, nada aconteceu.

9.2 Exemplo
 
Substituindo a palavra 'Aprendendo' por 'Entendendo'.


echo ${msg/#Aprendendo/Entendendo} 
Entendendo Shell Script, porque Shell é vida.

10.   ${var/%exp1/exp2}

Retorna uma sub cadeia de caracteres substituindo a expressão que termina com 'exp1' por 'exp2'.

10.1 Exemplo

Substituindo a palavra 'vida' por 'tudo'.

echo ${msg/%vida./tudo.}
Aprendendo Shell Script, porque Shell é tudo.

 

11.  ${var#exp}

Retorna uma subcadeia de caracteres removendo 'exp' do inicio do texto.


11.1 Exemplo


Revemovendo a palavra 'Aprendendo'.


echo ${msg#Aprendendo}
Shell Script, porque Shell é vida.

12.  ${var%exp}

Retorna uma sub cadeia de caracteres removendo 'exp1' do final do texto.

12.1 Exemplo

Removendo a palavra 'vida.'

echo ${msg%vida.}
Aprendendo Shell Script, porque Shell é

13.  ${var##*exp}

Retorna uma sub cadeia de caracteres removendo tudo do inicio até 'exp'.

13.1 Exemplo

Removendo tudo até a palavra 'porque'.

echo ${msg##*porque}
Shell é vida.

14.  ${var%%exp*}

Retorna uma sub cadeia de caracteres removendo tudo a partir de 'exp' até o final.

14.1 Exemplo

Removendo tudo depois da vírgula.

echo ${msg%%,*}
Aprendendo Shell Script

15.  ${#var}

Retorna o comprimento da variável.

15.1 Exemplo

Imprimindo o total de caracteres contidos na variável.

echo ${#msg}
45

16.  ${var:-exp}

Retorna 'exp' se o valor da variável for nulo, caso contrário retorna seu valor.

16.1 Exemplo

Usando uma variável sem valor para testar o retorno.

echo ${my_var:-sem valor}
sem valor

Como não havia valor, foi retornada a expressão 'sem valor'.

16.2 Exemplo

Usando a variável 'msg' que contém nossa mensagem.

echo ${msg:-sem valor}
Aprendendo Shell Script, porque Shell é vida.

Como a variável não era nula, foi retornado seu valor.

17.  ${var:+exp}

Retorna 'exp' se o valor da variável não for nulo, caso contrário retorna nulo.

17.1 Exemplo

Testando se a variável 'msg' possui algum valor armazenado.

echo ${msg:+com valor}
com valor

18.  ${var:=exp}

Retorna e armazena ‘exp’ se o valor da variável for nula, caso contrário retorna o valor da variável.

Esse recurso é semelhante ao ‘${var:-exp}’ porém, ele armazena o valor de ‘exp’ em ‘var’ ao invés de só imprimir na tela.

18.1 Exemplo

Testa se a variável é nula, se for, armazena a expressão 'agora tem valor'.


echo ${msg:=agora tem valor}
agora tem valor
 
# Imprimindo o valor de msg
echo $msg
agora tem valor  

19.  ${var:?exp}

Retorna 'exp' em formato de mensagem de erro se o valor da variável for nulo.

19.1 Exemplo

Imprimindo mensagem de erro se a variável for nula.

echo ${outra:?Variável não ode ser nula.}
bash: outra: Variável não pode ser nula.

A mensagem de erro foi retornada no seguinte padrão:
interpretador: variável: mensagem

20.  ${!var*}

Retorna todas as variáveis iniciadas com a nomenclatura 'var'.

20.1 Exemplo

Declarando diferentes variáveis e e listando suas nomenclaturas.

num_a=10
num_b=20
num_c=30
num_d=40
num_e=50
 
# Listando as variáveis.
echo ${!num_*}
num_a num_b num_c num_d num_e

Dicas:

Extraindo diferentes informações do diretório.


file="/home/teste/documento.txt"
# Extensão do arquivo.
echo ${file##*.} 
txt

# Nome do arquivo
echo ${file##*/} 
documento.txt 
 
#  Diretório 
echo ${file%/*} 
/home/teste
 
# Diretório/Nome do arquivo 
echo ${file%%.*} 
/home/teste/documento

by. SHAMAN

Comentários

Contato

Nome

E-mail *

Mensagem *