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
bash
especí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.txt
encontrarás:Las referencias a
$[
han desaparecidodoc/bash.html
de la descarga bash-doc-2.0.tar.gz y elNEWS
archivo 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