GNU/Linux >> Tutoriels Linux >  >> Linux

Raison pour laquelle le premier élément d'un tableau Zsh est indexé par 1 au lieu de 0 ?

D'après mon expérience avec les langages de programmation et de script modernes, je pense que la plupart des programmeurs ont généralement l'habitude de se référer au premier élément d'un tableau par comme index.
Y a-t-il des avantages substantiels à utiliser 1 ?

Je suis sûr d'avoir entendu parler de plus de langages autres que Zsh se comportant de la même manière avec des tableaux ; ça me va, car c'est tout aussi pratique.
Cependant, comme les langages de script shell précédemment publiés et largement utilisés tels que ksh et bash utilisent tous 0, pourquoi quelqu'un choisirait-il de modifier cette "norme" commune ?

Ma réponse immédiate à ma question serait "bien sûr que non" ;
alors, la seule explication à laquelle je peux penser concernant cette "fonctionnalité exclusive" aux obus serait " ils ont juste fait ça pour montrer un un peu plus leur coque cool ".

Je ne connais pas grand-chose ni de Zsh ni de son histoire, et il y a de fortes chances que ma théorie triviale à ce sujet n'ait aucun sens.

Y a-t-il une explication à cela ? Ou est-ce juste par goût personnel ?

Réponse acceptée :

  • Pratiquement tous les tableaux shell (Bourne, csh, tcsh, fish, rc, es, yash) commencent à 1. ksh est la seule exception que je connaisse (bash vient de copier ksh).
  • Langues les plus interprétées à l'époque (début des années 90) :awk , tcl au moins, et les outils généralement utilisés depuis le shell (cut -f1-3 , head -n 3 , sort -k1,3 , cal 1 2015 , comm -1 ) commencer à 1. sed , ed , vi numéroter leurs lignes à partir de 1…
  • zsh tire le meilleur parti du shell Bourne et de csh. Le tableau de shell Bourne [email protected] commencer à 1. zsh est cohérent avec sa gestion de [email protected] (comme à Bourne) ou $argv (comme dans csh). Voyez à quel point c'est déroutant dans ksh${@:0:1} ne vous donne pas le premier paramètre positionnel par exemple.
  • Un shell est un outil utilisateur avant d'être un langage de programmation. Il est logique pour la plupart des utilisateurs d'avoir le premier élément dans $a[1] . Cela signifie également que le nombre d'éléments est le même que le dernier indice (dans zsh comme dans la plupart des autres shells sauf ksh, les tableaux ne sont pas clairsemée).
  • a[1] pour le premier élément est cohérent avec a[-1] pour la dernière.
En relation :Créer des archives 7z distinctes pour chaque répertoire dans le répertoire actuel et paralléliser en plus via GNU Parallel ?

Donc, à mon avis, la question devrait plutôt être :qu'est-ce qui a mis dans la tête de David Korn pour que ses tableaux commencent à 0 ?


Linux
  1. Premiers pas avec Zsh

  2. Pouvoir au peuple

  3. Personnalisation du shell Bash

  4. Pourquoi le serveur a-t-il bloqué mon IP ?

  5. Linux - Pourquoi l'interface Ethernet s'appelle-t-elle Enp0s10 au lieu d'Eth0 ?

Qu'est-ce que le Shell sous Linux ?

Pourquoi Gnu Screen / Byobu laisse-t-il du texte inutile dans le shell lors d'une recherche inversée ?

Installez Awesome Zsh et faites-en le shell par défaut

Comportement des tableaux dans les scripts bash et le shell zsh (index de début 0 ou 1 ?)

Pourquoi l'utilisateur 'bin' a-t-il besoin d'un shell de connexion ?

Pourquoi slabtop -o ne renvoie-t-il que les 23 premières lignes lorsque la commande est canalisée ?