Aula 7.18 - Como funciona expansão de variáveis no terminal Linux
Este artigo faz parte do projeto #LTCode
A shell provê alternativas para a expansão de uma string com valor null.
O modificador :– usa o valor padrão que você definir no lugar de variáveis null ou indefinidas, enquanto permite que uma variável não nula represente a si própria.
O modificador :- não altera o valor da variável. Contudo, é possível modificar o valor de uma variável null ou indefinida para seu valor padrão em um script usando o modificador := .
O comando interno : (dois pontos) avalia cada token do comando que se segue, mas não executa nenhum comando. Se não tivesse o comando : (dois pontos) no começo, a shell avaliaria a expansão e tentaria executar o comando resultante dessa avaliação.
Se a variável for null ou indefinida, o modificador :? faz com que o script mostra uma mensagem e termine com um status de saída 1.
Se a variável não for indefinida ou null, então expande-se para o valor padrão definido por :+ .
Existem ainda outras expansões de variáveis:
${parametro:deslocamento} e ${parametro:deslocamento:comprimento}
Nesse caso deslocamento indica o caractere de início e comprimento a quantidade de caracteres (se não especificado expande-se até o final).
${#parametro}
Usado para obter o tamanho (comprimento) de valor de uma variável. Pode-se obter também o tamanho de um arranjo (quantidade de elementos), expandindo o arranjo com índices * ou @. E para obter o tamanho de um elemento do arranjo, basta referenciar pelo índice.
${parametro#palavra} e ${parametro##palavra}
O operador # remove o prefixo casado mínimo, enquanto ## o prefixo casado máximo, onde palavra é expandido como expansão de arquivos.
${parâmetro%palavra} e ${parâmetro%%palavra}
O operador % remove o sufixo casado mínimo, enquanto %% o sufixo casado máximo, onde palavra é expandido como expansão de arquivos
${parâmetro/padrão/string}
O padrão é expandido para encontrar o primeiro padrão assim como em expansão de arquivos, mas substitui string com o maior casamento da expansão de parâmetro.
${parâmetro//padrão/string}
Similar ao anterior, mas as "//" antes do padrão indicam que deve-se substituir todas as ocorrências do padrão casada por string para a expansão do parâmetro.
Próxima aula, clique aqui.
COMENTÁRIOS