Que signifie un signe dollar suivi d'un crochet $ […] en bash?


34

Il semble que $[expr]effectue une expansion arithmétique, tout comme $((expr)). Mais je ne trouve aucune mention de $[dans le manuel de bash. Cette commande ne donne aucun résultat:

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

Quel est cet opérateur et son comportement est-il standardisé n'importe où?

Ma version de bash: GNU bash, version 3.2.51 (1) - release (x86_64-apple-darwin13)


3
Pour répondre explicitement à votre question sur un standard : La syntaxe bashspécifique (obsolète) $[...]est non standard. Le $((...))(qui en découle ksh) est le standard POSIX.
Janis

2
Ubuntu 11.04: man bash | grep -E '\$\['. Sortie: L'ancien format $ [expression] est obsolète et sera supprimé dans les prochaines versions
Cyrus

Les pages de manuel peuvent contenir des éléments tels que _t_h_i_s (qui est ensuite interprété par l'utilitaire man de manière à apparaître différemment), de sorte que votre grep puisse échouer si cela se produisait et que la recherche devait être notée comme ceci
Olivier Dulac

Réponses:


19

Vous pouvez trouver l' ancienne source bash ici . En particulier, j'ai téléchargé bash-1.14.7.tar.gz . Dans le documentation/bash.txtvous trouverez:

Expansion arithmétique

L'expansion arithmétique permet l'évaluation d'une expression arithmétique et la substitution du résultat. Il existe deux formats d’expansion arithmétique:

     $[expression]

     $((expression))

Les références à $[sont partis dans doc/bash.htmlle téléchargement bash-doc-2.0.tar.gz et le NEWSfichier mentionne que:

La $[...]syntaxe d'expansion arithmétique n'est plus prise en charge, en faveur de $((...)).

$((...))est également la syntaxe standard pour une expansion arithmétique, mais peut avoir été ajoutée à la norme plus tard que l'implémentation Bash d'origine.

Cependant, $[...]semble toujours fonctionner dans Bash 5.0, il n'est donc pas complètement supprimé.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.