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.
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.
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/}) | 
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 | 
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 | 
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 | 
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 | 
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...