O que um sinal de dólar seguido por um colchete significa em bash?

32

Parece que $[expr] realiza uma expansão aritmética exatamente como $((expr)) . Mas não consigo encontrar menção de $[ no manual bash. Este comando não dá resultados:

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

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

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

    
por AmadeusDrZaius 15.06.2015 / 18:10

2 respostas

18

Você pode encontrar fonte bash antiga aqui . Em particular, eu baixei bash-1.14.7.tar.gz . No documentation/bash.txt você encontrará:

Arithmetic Expansion

Arithmetic expansion allows the evaluation of an arithmetic expression and the substitution of the result. There are two formats for arithmetic expansion:

     $[_e_x_p_r_e_s_s_i_o_n]

     $((_e_x_p_r_e_s_s_i_o_n))

As referências a $[ desapareceram em doc/bash.html do bash-doc -2.0.tar.gz download.

    
por 15.06.2015 / 19:19
26

Em um tópico da lista de discussão do GNU , diz que a sintaxe $[ era uma sintaxe antiga que foi preterida em favor de $(( , uma vez que esta última já era usada pelo shell Korn.

De acordo com o site , o manual do bash 3.2.48 continha uma referência ao $[ de sintaxe. Então presumivelmente essa referência foi removida em 3.2.51.

    
por 15.06.2015 / 18:10