Tokens como export
, declare
e semelhantes usam explicitamente nomes de variáveis como parâmetros. $
geralmente pode ser entendido como "o valor de", então $variable
significa "o valor de variable
". Tome este conjunto de comandos:
foo=bar
bar=baz
export $foo
( echo "$foo" )
O que acontecerá aqui é que você terá uma linha em branco de saída. Isso ocorre porque no comando export
, $foo
é realmente bar
(o valor de foo
), portanto, o comando real executado é export bar
. Como foo
não é exportado, seu valor padrão é nulo. No entanto, se a última linha fosse:
( echo "$bar" )
Você obteria a saída de baz
, o valor de bar
que havia sido export
em subpós próximos.
Geralmente, é uma boa ideia usar aspas fracas (" "
") em torno de todas suas referências de variáveis, por motivos que incluem, mas não se limitam ao que você mencionou (por exemplo, espaços em nomes de arquivos e caminhos). Por exemplo, se tivéssemos:
if [ $letter == a ]; then echo "ayyyy"; fi
mas letter
estavam vazios, o shell tentaria executar
if [ == a ]
que é um erro de sintaxe, mas com aspas:
if [ "$letter" == a ];
torna-se
if [ "" == a ];
que é válido.