Aula 7.18: Expansão de variáveis Linux shell

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.




Source link