Posicionamento da variável de script bash

7

Eu comecei a aprender scripts Bash e estou usando o tutorial de script Bash

Lá diz

Before Bash interprets (or runs) every line of our script it first checks to see if any variable names are present. For every variable it has identified, it replaces the variable name with its value. Then it runs that line of code and begins the process again on the next line.

O Bash primeiro percorre todo o script para encontrar variáveis? Eu não tenho certeza se isso é o que o autor tentou dizer, mas se sim, eu acho que não está correto?

quando executo:

#!/bin/bash


echo "hello $USERR"



USERR=John

Eu recebo hello como resultado.

Se eu correr:

#!/bin/bash


USERR=John

echo "hello $USERR"

eu recebo hello John como resultado.

    
por blablatrace 04.09.2018 / 09:41

2 respostas

9

So does Bash first run through the whole script to find variables?

Não. Como você mesmo descobriu no seu exemplo, os scripts Bash são executados de cima para baixo.

Uma boa prática é definir todas as variáveis que você precisa no topo do seu script.

    
por 04.09.2018 / 09:47
7

Essa é uma maneira muito desleixada de dizer que o shell procura por expansões, como por exemplo variáveis (mas também substituições de comandos, etc.).

O texto poderia ser interpretado para indicar que o shell lê todo o script e procura variáveis em todas as linhas antes da execução. Isso não é assim. Ele processa o comando de script por comando (um comando pode abranger várias linhas).

O shell bash faz o seguinte com cada comando antes de executá-lo:

  1. expansão de chave
  2. expansão de til
  3. parâmetro e expansão de variáveis
  4. expansão aritmética
  5. substituição de comando (feita da esquerda para a direita)
  6. divisão de palavras
  7. expansão do nome do caminho
  8. remoção de cotação
por 04.09.2018 / 10:06

Tags