¿Qué significa un signo de dólar seguido de un corchete $ [...] en bash?


34

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)


3
Para responder explícitamente a su pregunta sobre un estándar : La sintaxis bashespecífica (obsoleta) $[...]no es estándar. El $((...))(que se deriva de ksh) es el estándar POSIX.
Janis

2
Con Ubuntu 11.04: man bash | grep -E '\$\['. Salida: el formato anterior $ [expresión] está en desuso y se eliminará en las próximas versiones
Cyrus

las páginas man pueden contener cosas como _t_h_i_s (que luego es interpretada por la utilidad man para que aparezca de manera diferente), por lo que su grep podría fallar si sucede lo que busca se suponía que se notara así
Olivier Dulac

Respuestas:


19

Puedes encontrar la fuente antigua de bash aquí . En particular, descargué bash-1.14.7.tar.gz . En el documentation/bash.txtencontrarás:

Expansión Aritmética

La expansión aritmética permite la evaluación de una expresión aritmética y la sustitución del resultado. Hay dos formatos para la expansión aritmética:

     $[expression]

     $((expression))

Las referencias a $[han desaparecido doc/bash.htmlde la descarga bash-doc-2.0.tar.gz y el NEWSarchivo menciona que:

La $[...]sintaxis de expansión aritmética ya no es compatible, a favor de $((...)).

$((...))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.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.