Parece que $[expr]realiza la expansión aritmética al igual que $((expr)). Pero no puedo encontrar ninguna mención $[en el manual de bash. Este comando no da resultados:
gunzip -c /usr/share/man/man1/bash.1.gz | grep -E '\$\['
¿Qué es este operador y su comportamiento está estandarizado en alguna parte?
Mi versión bash: GNU bash, versión 3.2.51 (1) -release (x86_64-apple-darwin13)
bash
arithmetic
AmadeusDrZaius
fuente
fuente

bashespecífica (obsoleta)$[...]no es estándar. El$((...))(que se deriva deksh) es el estándar POSIX.man bash | grep -E '\$\['. Salida: el formato anterior $ [expresión] está en desuso y se eliminará en las próximas versionesRespuestas:
Puedes encontrar la fuente antigua de bash aquí . En particular, descargué bash-1.14.7.tar.gz . En el
documentation/bash.txtencontrarás:Las referencias a
$[han desaparecidodoc/bash.htmlde la descarga bash-doc-2.0.tar.gz y elNEWSarchivo menciona que:$((...))también es la sintaxis estándar para una expansión aritmética, pero puede haberse agregado al estándar más tarde que la implementación Bash original.Sin embargo,
$[...]todavía parece funcionar en Bash 5.0, por lo que no se elimina por completo.fuente
En un hilo de la lista de correo de GNU bash , dice que la
$[sintaxis era una sintaxis temprana que fue desaprobada a favor$((, ya que la última ya fue utilizada por el shell Korn.Según este sitio , el manual de bash 3.2.48 contenía una referencia a la
$[sintaxis. Entonces, presumiblemente, esta referencia se había eliminado en 3.2.51.fuente