Qual é a diferença entre echo $ BASH_VERSION e echo $ {BASH_VERSION}?


2

Eu vejo muita ${VARIABLE}sintaxe de tipo nos scripts. Qual é o sentido dos aparelhos?

Respostas:


10

Delimita a variável.

Você pode precisar de $ FOO como variável, mas precisa concatená-lo com outro texto. Nesse caso, isso não funcionará:

echo "$FOObar"

Isso irá reclamar que não há variável $ FOObar. Para contornar isso, delimite a variável:

echo "${FOO}bar"

Isso funcionará e imprimirá o valor de $ FOO com o texto 'bar' concatenado.

É uma daquelas coisas que as pessoas geralmente escolhem fazer o tempo todo, para evitar problemas onde é realmente necessário. Pode ser um bom hábito entrar, pois o script bash é muito implacável quanto a erros de sintaxe.


5

@mauvedeity está correto. O problema não é apenas o fato de alguns caracteres, quando escritos após uma referência variável serem considerados parte dessa referência - também é o fato de que alguns caracteres são considerados não fazer parte dela. Isso interrompe, por exemplo, operações de manipulação de variáveis ​​e uso de matrizes.

Matrizes :

$ foo=( one two three )
$ echo $foo # implied first element with index 0
one
$ echo $foo[1] # this will not work, as [1] is not considered part of variable
one[1]
$ echo ${foo[1]} # this will work
two
$ echo ${foo[*]} # all elements
one two three
$ echo ${#foo[*]} # array length
3
$ echo ${#foo[2]} # length of third element (index 2)
5

Operações variáveis

$ file=filename.txt
$ echo $file
filename.txt
$ echo ${file%.txt} # remove last match of .txt in $file
filename

Tudo isso falharia (como ilustrado no exemplo da matriz) se não definíssemos explicitamente os delimitadores para a referência da variável.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.