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)
bash
arithmetic
AmadeusDrZaius
la source
la source
bash
spécifique (obsolète)$[...]
est non standard. Le$((...))
(qui en découleksh
) est le standard POSIX.man bash | grep -E '\$\['
. Sortie: L'ancien format $ [expression] est obsolète et sera supprimé dans les prochaines versionsRéponses:
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.txt
vous trouverez:Les références à
$[
sont partis dansdoc/bash.html
le téléchargement bash-doc-2.0.tar.gz et leNEWS
fichier mentionne que:$((...))
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é.la source
Dans un fil de discussion de la liste de diffusion GNU bash , il est indiqué que la
$[
syntaxe était une syntaxe ancienne qui était déconseillée$((
, car cette dernière était déjà utilisée par le shell Korn.Selon ce site , le manuel de bash 3.2.48 contenait une référence à la
$[
syntaxe. On peut donc supposer que cette référence a été supprimée en 3.2.51.la source