- Gerar link
- X
- Outros aplicativos
Postagem em destaque
- Gerar link
- X
- Outros aplicativos
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 valor18. ${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
Postar um comentário