O que é substituição de variável na programação shell

O que é substituição de variável na programação shell

Esta pergunta é muito básica e eu a faço não só para mim, mas para outros recém-chegados que veem o termosubstituição de variávele tenha os seguintes pensamentos:

Pelo que entendi, o termosubstituição de variáveldescreve "substituir um valor de uma variável por outra", mas duvido que esteja correto.
Eu me perguntei por que essa ação requer um termo especial, em vez de apenas dizer "alterar o valor de uma variável editando-a manualmente em um editor de texto?

O que ésubstituição de variávelconceito em programação shell e se você souber a resposta, dê um exemplo prático de quais tipos de ações ele utiliza em seu trabalho.

Responder1

substituir um valor de uma determinada variável por outra.

Essa descrição está errada em vários aspectos. A substituição de variável substitui onomede uma variável (mais algumas informações sintáticas) por seuvalor. Além disso, não opera “em” uma variável, mas sim em um comando. O comando pode definir o valor de uma variável, mas esse é apenas um caso entre muitos.

Por exemplo, o comando echo $fooexibe o valor da variável. O código-fonte contém $fooe a saída correspondente contém o valor da variável foo.

A razão pela qual isso é chamado de “substituição de variável” é que o shell opera por meio de uma série de transformações de strings (e listas de strings). Por exemplo (simplificado), considere o comando ls -l $dir/*.$ext. Para avaliá-lo, várias coisas acontecem em sequência:

  1. O shell começa a analisar o comando e o divide em três palavras ls: -le $dir/*.$ext.
  2. Na terceira palavra, o shell vê duas substituições de variáveis ​​para realizar (é isso que os cifrões significam neste contexto). Digamos que o valor de diris /some/pathe o valor de extis txt, então o shell reescreve $dir/*.$extpara /some/path/*.txt. Esta é uma substituição porque o valor de cada variável substitui a sintaxe do nome do dólar.
  3. O shell expande o padrão curinga /some/path/*.txtpara a lista de nomes de arquivos correspondentes.
  4. O shell é executado lscom os argumentos calculados.

(A sintaxe$foo faz mais do que substituir o valor de uma variávelmas isso é outra história.)

Na maioria das linguagens de programação, para obter o valor de uma variável, basta escrever o nome da variável. O shell foi projetado para uso interativo; se você escrever um nome, ele será interpretado como uma string literal. É por isso que a sintaxe para obter o valor de uma variável possui um marcador extra para dizer “Quero obter o valor de uma variável”.

por que esta ação requer um termo especial em vez de apenas dizer "alterar o valor de uma variável editando-a manualmente em um editor de texto?

A substituição de variável não tem nada a ver com alterar o valor de uma variável. Alterar o valor de uma variável é umaatribuição.

É claro que uma atribuição pode conter substituições de variáveis, como qualquer outro comando. Mas as substituições de variáveis ​​não são projetadas especificamente para atribuições.

Além disso, você não pode alterar o valor de uma variável com um editor. Uma variável já declarada possui um valor em cada processo, não é uma configuração do sistema. Você pode ter arquivos de configuração que definem oinicialvalor de uma variável, e você pode usar um editor para alterar esse valor inicial nesses arquivos, mas depois disso o valor pode mudar.

informação relacionada