GNU/Linux >> Linux Esercitazione >  >> Linux

Motivo per cui il primo elemento di un array Zsh è indicizzato da 1 anziché da 0?

In base alla mia esperienza con i moderni linguaggi di programmazione e scripting, credo che la maggior parte dei programmatori sia generalmente abituata a fare riferimento al primo elemento di un array con come indice.
Esistono vantaggi sostanziali nell'utilizzo di 1 ?

Sono sicuro di aver sentito parlare di più lingue diverse da Zsh che si comportano in modo simile con gli array; per me va bene, in quanto è ugualmente conveniente.
Tuttavia, poiché i linguaggi di scripting della shell rilasciati in precedenza e ampiamente utilizzati come ksh e bash usano tutti 0, perché qualcuno sceglierebbe di modificare questo "standard" comune?

La mia risposta immediata alla mia domanda sarebbe "ovviamente no";
quindi, l'unica spiegazione che mi viene in mente riguardo a questa "caratteristica in qualche modo esclusiva" delle shell sarebbe "lo hanno fatto solo per mostrare un un po' di più il loro bel guscio “.

Tuttavia, non so molto né di Zsh né della sua storia, ed è molto probabile che la mia teoria banale su questo non abbia alcun senso.

C'è una spiegazione per questo? O è solo per gusto personale?

Risposta accettata:

  • Praticamente tutti gli array di shell (Bourne, csh, tcsh, fish, rc, es, yash) iniziano da 1. ksh è l'unica eccezione che conosco (bash ha appena copiato ksh).
  • La maggior parte delle lingue interpretate all'epoca (primi anni '90):awk , tcl almeno, e strumenti tipicamente usati dalla shell (cut -f1-3 , head -n 3 , sort -k1,3 , cal 1 2015 , comm -1 ) inizia da 1. sed , ed , vi numera le loro righe da 1...
  • zsh prende il meglio di Bourne shell e csh. L'array della shell Bourne [email protected] inizia da 1. zsh è coerente con la sua gestione di [email protected] (come in Bourne) o $argv (come in csh). Guarda quanto è confuso in ksh dove ${@:0:1} non ti dà il primo parametro posizionale per esempio.
  • Una shell è uno strumento utente prima di essere un linguaggio di programmazione. Ha senso che la maggior parte degli utenti abbia il prima elemento in $a[1] . Significa anche che il numero di elementi è lo stesso dell'ultimo indice (in zsh come nella maggior parte delle altre shell eccetto ksh, gli array sono non sparso).
  • a[1] poiché il primo elemento è coerente con a[-1] per ultimo.
Correlati:creare archivi 7z separati per ciascuna directory nella directory corrente e parallelizzare ulteriormente tramite GNU Parallel?

Quindi IMO la domanda dovrebbe piuttosto essere:cosa è successo alla testa di David Korn per far sì che i suoi array inizino da 0?


Linux
  1. Personalizzazione della shell Bash

  2. Perché il server ha bloccato il mio IP?

  3. Linux:perché l'interfaccia Ethernet si chiama Enp0s10 anziché Eth0?

  4. Perché "sudo Su" in uno script di shell non esegue il resto dello script come root?

  5. Se i processi ereditano l'ambiente del genitore, perché abbiamo bisogno dell'esportazione?

Iniziare con Zsh

Potenza (Shell) alle persone

Che cos'è la shell in Linux?

Perché Gnu Screen / Byobu lascia il testo spazzatura nella shell durante una ricerca inversa?

Installa Awesome Zsh e rendilo la shell predefinita

Comportamento degli array nello scripting bash e nella shell zsh (Start Index 0 o 1?)