Es scheint, dass $[expr]
die arithmetische Expansion genauso ausgeführt wird $((expr))
. Aber ich kann keine Erwähnung $[
in der Bash-Anleitung finden. Dieser Befehl liefert keine Ergebnisse:
gunzip -c /usr/share/man/man1/bash.1.gz | grep -E '\$\['
Was ist dieser Operator und ist sein Verhalten überall standardisiert?
Meine Bash-Version: GNU Bash, Version 3.2.51 (1) -Release (x86_64-apple-darwin13)
bash
arithmetic
AmadeusDrZaius
quelle
quelle
bash
spezifische$[...]
Syntax entspricht nicht dem Standard. Das$((...))
(was von stammtksh
) ist POSIX-Standard.man bash | grep -E '\$\['
. Ausgabe: Das alte Format $ [Ausdruck] ist veraltet und wird in zukünftigen Versionen entferntAntworten:
Hier finden Sie alte Bash-Quellen . Insbesondere habe ich heruntergeladen bash-1.14.7.tar.gz . In der
documentation/bash.txt
finden Sie:Die Verweise auf
$[
gehendoc/bash.html
aus dem bash-doc-2.0.tar.gz-Download und demNEWS
Datei wird erwähnt:$((...))
ist auch die Standardsyntax für eine arithmetische Erweiterung, wurde jedoch möglicherweise später als in der ursprünglichen Bash-Implementierung zum Standard hinzugefügt.Scheint
$[...]
jedoch immer noch in Bash 5.0 zu funktionieren, sodass es nicht vollständig entfernt wird.quelle
In einem Thread auf der GNU-Bash-Mailingliste heißt es, dass die
$[
Syntax um eine frühe Syntax handelte, die zugunsten von veraltet war$((
, da letztere bereits von der Korn-Shell verwendet wurde.Laut dieser Site enthielt das Handbuch für Bash 3.2.48 einen Verweis auf die
$[
Syntax. Vermutlich wurde dieser Verweis in 3.2.51 entfernt.quelle