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)
bash
arithmetic
AmadeusDrZaius
fonte
fonte
bash
específica (obsoleta)$[...]
não é padrão. O$((...))
(que resultaksh
) é o padrão POSIX.man bash | grep -E '\$\['
. Saída: O velho formato $ [expressão] é obsoleto e será removido em versões futurasRespostas:
Você pode encontrar a fonte antiga do bash aqui . Em particular, baixei o bash-1.14.7.tar.gz . No
documentation/bash.txt
você encontrará:As referências
$[
são encontradas no downloaddoc/bash.html
do bash-doc-2.0.tar.gz e oNEWS
arquivo menciona que:$((...))
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.fonte
Em um tópico na lista de discussão do GNU bash , ele diz que a
$[
sintaxe era uma sintaxe anterior que foi preterida em favor de$((
, uma vez que o último já era usado pelo shell Korn.De acordo com este site , o manual do bash 3.2.48 continha uma referência à
$[
sintaxe. Portanto, presumivelmente, essa referência foi removida em 3.2.51.fonte