GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Grund, warum das erste Element eines Zsh-Arrays mit 1 statt mit 0 indiziert wird?

Aufgrund meiner Erfahrung mit modernen Programmier- und Skriptsprachen glaube ich, dass die meisten Programmierer im Allgemeinen daran gewöhnt sind, das erste Element eines Arrays mit zu bezeichnen als Index.
Gibt es wesentliche Vorteile bei der Verwendung von 1 ?

Ich bin mir sicher, dass ich von mehr Sprachen als Zsh gehört habe, die sich ähnlich mit Arrays verhalten; Für mich ist das in Ordnung, da es genauso praktisch ist.
Da jedoch zuvor veröffentlichte und weit verbreitete Shell-Skriptsprachen wie ksh und bash alle 0 verwenden, warum würde jemand diesen gemeinsamen „Standard“ ändern?

Meine sofortige Antwort auf meine Frage wäre „natürlich nicht“;
dann wäre die einzige Erklärung, die mir in Bezug auf dieses etwas „exklusive Merkmal“ von Granaten einfällt, „sie haben das nur getan, um anzugeben etwas mehr ihre coole Hülle “.

Ich weiß jedoch nicht viel über Zsh oder seine Geschichte, und es besteht eine hohe Wahrscheinlichkeit, dass meine triviale Theorie darüber keinen Sinn ergibt.

Gibt es dafür eine Erklärung? Oder ist es nur aus persönlichem Geschmack?

Akzeptierte Antwort:

  • Praktisch alle Shell-Arrays (Bourne, csh, tcsh, fish, rc, es, yash) beginnen bei 1. ksh ist die einzige Ausnahme, die ich kenne (bash hat gerade ksh kopiert).
  • Zu dieser Zeit (Anfang der 90er) am häufigsten interpretierte Sprachen:awk , tcl zumindest und Tools, die normalerweise von der Shell verwendet werden (cut -f1-3 , head -n 3 , sortieren -k1,3 , Kal. 1 2015 , comm -1 ) beginnen bei 1. sed , ed , vi nummerieren Sie ihre Zeilen von 1…
  • zsh nutzt das Beste aus der Bourne-Shell und csh. Das Bourne-Shell-Array [email protected] Beginnen Sie bei 1. zsh ist konsistent mit der Handhabung von [email protected] (wie in Bourne) oder $argv (wie in csh). Sehen Sie, wie verwirrend es in ksh ist wobei ${@:0:1} gibt Ihnen zum Beispiel nicht den ersten Positionsparameter.
  • Eine Shell ist ein Benutzerwerkzeug, bevor sie eine Programmiersprache ist. Für die meisten Benutzer ist es sinnvoll, die erste zu haben -Element in $a[1][code> . Es bedeutet auch, dass die Anzahl der Elemente gleich dem letzten Index ist (in zsh, wie in den meisten anderen Shells außer ksh, sind Arrays nicht spärlich).
  • a[1][code> denn das erste Element ist konsistent mit a[-1] zum Schluss.
Verwandte:Separate 7z-Archive für jedes Verzeichnis im aktuellen Verzeichnis erstellen und zusätzlich über GNU Parallel parallelisieren?

Die Frage sollte meiner Meinung nach also eher lauten:was ist David Korn in den Kopf gekommen, um seine Arrays bei 0 beginnen zu lassen?


Linux
  1. Erste Schritte mit Zsh

  2. Power(Shell) an die Menschen

  3. Warum überprüft Bashrc, ob die aktuelle Shell interaktiv ist?

  4. Die Bedeutung von $? In einem Shell-Skript?

  5. Warum müssen Sie #!/bin/bash an den Anfang einer Skriptdatei setzen?

Was ist die Shell unter Linux?

Warum verwendet niemand die True Bourne Shell als /bin/sh?

Wie lösche ich die ersten N Zeilen einer ASCII-Datei mit Shell-Befehlen?

Warum hinterlässt Gnu Screen / Byobu während einer Rückwärtssuche Mülltext in der Shell?

Installieren Sie das Awesome Zsh und machen Sie es zur Standard-Shell

Verhalten von Arrays in Bash-Scripting und ZSH-Shell (Startindex 0 oder 1?)