De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.


Expansão de Parâmetros - Parte 2

Colaboração: Julio Cezar Neves

Data de Publicação: 27 de setembro de 2021

Repare que muitas dessas Expansões de Parâmetros, têm função semelhante a comandos tais como sed, cut, tr, awk, expr, ... e sempre que houver possibilidade de usá-las em substituição a esses comandos, aconselho fortemente que o faça, pois são muito mais leves e velozes que seus similares, porque atuam como variáveis e não como comandos.

Expansões de Parâmetros para substituição de cadeias

Nessas Expansões de Parâmetros, o que chamamos de PADRAO são cadeias formadas com auxílio dos caracteres coringas usados na expansão de nomes de arquivos, podendo inclusive serem os coringas das expansões estendidas (extglob).

Parâmetro Para que serve
${VAR#PADRAO} Remove a menor ocorrência de PADRAO no início de VAR
${VAR##PADRAO} Remove a maior ocorrência de PADRAO no início de VAR
${VAR%PADRAO} Remove a menor ocorrência de PADRAO no fim de VAR
${VAR%%PADRAO} Remove a maior ocorrência de PADRAO no fim de VAR
${VAR/PADRAO/NOVO} Troca a primeira ocorrência de PADRAO por NOVO
${VAR//PADRAO/NOVO} Troca todas as ocorrências de PADRAO por NOVO
${VAR/PADRAO} Remove a primeira ocorrência de PADRAO (= ${VAR/PADR/})
${VAR//PADRAO} Remove todas as ocorrências de PADRAO (= ${VAR//PADR/})

Expansões de Parâmetros para manipulação e corte de cadeias

Complementares às Expansões de Parâmetros para substituição de cadeias, porém nessas os cortes serão especificados por campos numéricos e não por padrões coringas.

Parâmetro Para que serve
${VAR:TAM} Remove um pedaço de tamanho TAM do início de VAR
${VAR:INT:TAM} Remove os INT caracteres do início de VAR e lista os TAM primeiros após a remoção
${VAR:: TAM} Gera uma saída com os TAM primeiros caracteres
${VAR:: -TAM} Remove os últimos TAM caracteres de VAR
${VAR: -TAM}
${VAR:(-TAM)}
Manda para a saída os TAM últimos caracteres de VAR
${VAR:INT1:-INT2} Corta INT1 do início e INT2 do fim de VAR

Expansões de Parâmetros para informar tamanho

Essas expansões são úteis para saber o tamanho de cadeias ou a quantidade de elementos de vetores

Parâmetro Para que serve
${#VAR} Devolve o tamanho de VAR
${#VET[@]} Devolve a quantidade de elementos do vetor VET

Expansões de Parâmetros para fazer indireção

São as que servem para listar o conteúdo do endereço que está sendo apontado pela variável.

Parâmetro Para que serve
${!VAR} Lista a variável cujo nome está dentro de VAR
${!PREF*}
${!PREF@}
Expande para a lista de nomes de variáveis que começam por PREF
${!VET[@]}
${!VET[*]}
Lista os índices do vetor VET, Muito útil para vetores associativos

Expansões de Parâmetros para transformar caixa das letras

Essas Expansões de Parâmetros são formas simples e rápidas para mudar parra letras de caixa alta para caixa baixa e vice-versa.

Parâmetro Para que serve
${VAR^} Passa o primeiro caractere para maiúscula
${VAR^^} Passa todos os caracteres para maiúscula
${VAR,} Passa o primeiro caractere para minúscula
${VAR,,} Passa todos os caracteres para minúscula
${VAR~} Inverte a caixa do primeiro caractere
${VAR~~} Inverte a caixa de todos os caracteres

Expansões de Parâmetros para estabelecer valores padrão (default)

As Expansões de Parâmetros a seguir podem ser usadas substituindo testes para verificar a existência de variáveis, atribuindo valores de acordo com a existência ou não delas e/ou seus dados.

Parâmetro Para que serve
${VAR:-CAD} Se VAR não existe ou está vazia, manda a cadeia CAD para a saída
${VAR-CAD} Se VAR não existe, manda a cadeia CAD para a saída
${VAR:=CAD} Se VAR não existe ou está vazia, VAR recebe CAD
${VAR=CAD} Se VAR não existe, VAR recebe CAD
${VAR:+CAD} se VAR existe e "não" está vazia, manda CAD para a saída
${VAR+CAD} Se VAR existe, manda CAD para a saída
${VAR:?ERRO} Exibe a mensagem ERRO, se VAR não existe ou está vazia
${VAR?ERRO} Exibe a mensagem ERRO, se VAR não existe

Amanhã começaremos a destrinchá-las...



Veja a relação completa dos artigos de Julio Cezar Neves