GNU/Linux >> Tutoriales Linux >  >> Linux

¿Razón por la que el primer elemento de una matriz Zsh está indexado por 1 en lugar de 0?

Desde mi experiencia con la programación moderna y los lenguajes de secuencias de comandos, creo que la mayoría de los programadores generalmente están acostumbrados a referirse al primer elemento de una matriz por como índice.
¿Hay alguna ventaja sustancial en el uso de 1 ?

Estoy seguro de que he oído hablar de más idiomas además de Zsh que se comportan de manera similar con matrices; está bien para mí, ya que es igualmente conveniente.
Sin embargo, como los lenguajes de secuencias de comandos de shell lanzados anteriormente y ampliamente utilizados, como ksh y bash, todos usan 0, por qué ¿Alguien elegiría alterar este "estándar" común?

Mi respuesta inmediata a mi pregunta sería "por supuesto que no";
entonces, la única explicación que se me ocurre con respecto a esta "característica exclusiva" de las conchas sería "simplemente hicieron esto para mostrar un un poco más de su genial caparazón “.

Sin embargo, no sé mucho sobre Zsh o su historia, y existe una gran posibilidad de que mi teoría trivial sobre esto no tenga ningún sentido.

¿Hay alguna explicación para esto? ¿O es simplemente por gusto personal?

Respuesta aceptada:

  • Prácticamente todas las matrices de shell (Bourne, csh, tcsh, fish, rc, es, yash) comienzan en 1. ksh es la única excepción que conozco (bash acaba de copiar ksh).
  • Idiomas más interpretados en ese momento (principios de los 90):awk , tcl al menos, y las herramientas que normalmente se usan desde el shell (cut -f1-3 , head -n 3 , sort -k1,3 , cal 1 2015 , comm -1 ) comienzan en 1. sed , ed , vi numere sus líneas desde 1…
  • zsh toma lo mejor de Bourne shell y csh. La matriz de shell de Bourne [email protected] comienza en 1. zsh es consistente con su manejo de [email protected] (como en Bourne) o $argv (como en csh). Vea lo confuso que es en ksh donde ${@:0:1} no le da el primer parámetro posicional, por ejemplo.
  • Un shell es una herramienta de usuario antes de ser un lenguaje de programación. Tiene sentido para la mayoría de los usuarios tener el primero elemento en $a[1] . También significa que el número de elementos es el mismo que el último índice (en zsh como en la mayoría de los otros shells excepto ksh, las matrices no escaso).
  • a[1] para el primer elemento es consistente con a[-1] por lo último.
Relacionado:¿Crear archivos 7z separados para cada directorio en el directorio actual y además paralelizar a través de GNU Parallel?

Entonces, en mi opinión, la pregunta debería ser:¿qué se metió en la cabeza de David Korn para hacer que sus arreglos comiencen en 0?


Linux
  1. Poder (Shell) para la gente

  2. Personalización del shell Bash

  3. Linux:¿por qué la interfaz Ethernet se llama Enp0s10 en lugar de Eth0?

  4. ¿Por qué "sudo Su" en un script de Shell no ejecuta el resto del script como root?

  5. ¿Por qué necesita poner #!/bin/bash al comienzo de un archivo de script?

¿Qué es el Shell en Linux?

¿Por qué Gnu Screen / Byobu deja texto basura en el shell durante una búsqueda inversa?

Instale Awesome Zsh y conviértalo en el shell predeterminado

Comportamiento de Arrays en bash scripting y zsh shell (¿Índice de inicio 0 o 1?)

¿Por qué el usuario 'bin' necesita un shell de inicio de sesión?

¿Por qué slabtop -o solo devuelve las primeras 23 líneas cuando se canaliza el comando?