O que é “Expansão de Parâmetros” (A.K.A “Expansão Variável”) no shell-scripting em geral e no Bash em particular?

0

Eu entendo o termo "Expansão de parâmetro" (AKA "Variable expansion") como um termo genérico para várias operações não relacionadas no shell-scripting em geral e no Bash em particular, como:

  1. Substituição variável.
  2. Divisão de linha no caso de dois ou mais valores na mesma linha.
  3. Globeando uma variável de um determinado escopo.

e talvez mais.

Se eu entendi a filosofia por trás desse termo corretamente, nós "expandimos" a variável de ser apenas uma variável, para ser um fluxo de dados mais influente (digamos, um valor substituído) - agora é expandido para ser uma variável que algo foi feito com.

Minha pergunta:

O meu entendimento do termo é suficientemente preciso em geral e existem mais operações sob esse termo genérico que devem ser mencionadas em uma resposta?

    
por Arcticooling 11.11.2017 / 07:25

2 respostas

2

A expansão de parâmetro também conhecida como expansão de variável é a substituição de estruturas sintáticas da forma $parameter e ${parameter} pelo valor do parâmetro, possivelmente processado pela aplicação de modificadores.

Quando um shell lê uma linha de comando, ele o processa por várias etapas bem definidas, como dividir a linha em palavras, executar vários tipos de expansões (das quais a expansão de parâmetro é apenas uma) e aplicar quaisquer redirecionamentos. Por exemplo, o shell Bash primeiro dividirá a linha em palavras. em seguida, ele executará a expansão de chave, expansão de til, expansão de parâmetro e variável, expansão aritmética, substituição de comando e expansão de processo na ordem da esquerda para a direita, seguida pela divisão final de palavras e expansão de nome de caminho.

Não entendo o que você quer dizer com "impressão variável".

Globbing, ou "expansão do nome do caminho" como a documentação do Bash prefere chamar, acontece após expansão da variável; o shell examina cada palavra na linha de comando quanto à presença dos caracteres * , ? e [ e, se algum deles for encontrado, considera a palavra como um padrão e a substitui pela lista de arquivos correspondentes, sujeitos a certas opções de configuração.

Veja a página de manual do seu shell para detalhes; por exemplo, para o Bash, você pode ler a página de manual , a Manual de Referência , o Guia Avançado de Scripts e muitos outros materiais.

    
por 11.11.2017 / 11:38
0

Para mim, não existe expansão de variáveis.

Existem variáveis e expansão de shell (parâmetro) (veja aqui ).

Uma variável é uma string ou um número ao qual você faz referência, dando a ela um nome:

myVariable=2

Expansão do parâmetro shell é o processo pelo qual o shell recebe dados e aplica certas regras a ele antes da execução. Então, enquanto:

echo $myVariable

não é um comando válido para execução pois bash 'sabe' que quando vê um $ seguido por algum texto, ele precisa se referir a sua lista de variáveis para descobrir que o valor atual de $ myVariable é de fato 2; Só então você deve executar:

echo 2
Entender todo o shebang (sic) de expansão de shell é simplesmente uma questão de entender o conjunto de regras que o bash aplica para expandir certas sintaxes e como isso pode ser modificado ao usar aspas duplas (""), aspas simples ("" ) ou carrapatos atrasados ('').

Recomendo uma leitura cuidadosa das partes relevantes do manual de referência da bash juntamente com alguma prática no terminal.

    
por 11.11.2017 / 11:57