Expandir e imprimir são duas ações diferentes. Expansão abrange um número de fases no processamento de um comando pelo shell : no Bash , expansão de chave ( {1..5}
se torna 1 2 3 4 5
), expansão de til ( ~user
se torna /home/user
conforme apropriado), expansão de parâmetro de shell ( ${variable}
é substituído pelo valor da variável), substituição de comando, expansão aritmética substituição de processos, divisão de palavras e expansão de nomes de arquivos. (Veja também Expansão das palavras POSIX .)
No seu caso, a expansão é a expansão de parâmetros:
echo "${variable}"
torna-se
echo "value"
depois do que você se refere como substituição de variável, então
echo value
após a remoção da cotação (simplificando um pouco) e echo
faz a impressão. Acontece que echo
e printf
são internos do shell, portanto, apenas o shell está envolvido, mas os passos são separados, e a situação seria idêntica aos comandos externos.
Portanto, a impressão não é um caso especial de expansão; No entanto, a substituição (como na sua pergunta vinculada) é, consulte o manual de Bash para detalhes.