O que significa um sinal de cifrão seguido de colchete $ […] na festança?


34

Parece que $[expr]realiza a expansão aritmética da mesma forma $((expr)). Mas não consigo encontrar nenhuma menção $[no manual do bash. Este comando não fornece resultados:

gunzip -c /usr/share/man/man1/bash.1.gz | grep -E '\$\['

O que é esse operador e seu comportamento é padronizado em qualquer lugar?

Minha versão do bash: GNU bash, versão 3.2.51 (1) -release (x86_64-apple-darwin13)


3
Para responder explicitamente à sua pergunta sobre um padrão : A sintaxe bashespecífica (obsoleta) $[...]não é padrão. O $((...))(que resulta ksh) é o padrão POSIX.
Janis

2
Com o Ubuntu 11.04: man bash | grep -E '\$\['. Saída: O velho formato $ [expressão] é obsoleto e será removido em versões futuras
Cyrus

páginas man poderia conter coisas como _t_h_i_s (que é então interpretado pelo utilitário homem, de modo a aparecer de forma diferente) para que o seu grep pode falhar se isso acontece a coisa que você procurar deveria ser observado como esta
Olivier Dulac

Respostas:


19

Você pode encontrar a fonte antiga do bash aqui . Em particular, baixei o bash-1.14.7.tar.gz . No documentation/bash.txtvocê encontrará:

Expansão Aritmética

A expansão aritmética permite a avaliação de uma expressão aritmética e a substituição do resultado. Existem dois formatos para expansão aritmética:

     $[expression]

     $((expression))

As referências $[são encontradas no downloaddoc/bash.html do bash-doc-2.0.tar.gz e o NEWSarquivo menciona que:

A $[...]sintaxe de expansão aritmética não é mais suportada, a favor de $((...)).

$((...))também é a sintaxe padrão para uma expansão aritmética, mas pode ter sido adicionada ao padrão posteriormente à implementação original do Bash.

No entanto, $[...]ainda parece funcionar no Bash 5.0, portanto não é completamente removido.


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.