GNU/Linux >> Belajar Linux >  >> Linux

Alasan Mengapa Elemen Pertama Array Zsh Diindeks Oleh 1, Bukan 0?

Dari pengalaman saya dengan bahasa pemrograman dan skrip modern, saya yakin sebagian besar programmer umumnya terbiasa merujuk ke elemen pertama array dengan sebagai indeks.
Apakah ada keuntungan substansial dalam menggunakan 1 ?

Saya yakin saya pernah mendengar lebih banyak bahasa selain Zsh yang berperilaku serupa dengan array; itu baik-baik saja oleh saya, karena sama-sama nyaman.
Namun, seperti yang dirilis sebelumnya dan banyak digunakan bahasa skrip shell seperti ksh dan bash semua menggunakan 0, mengapa akankah seseorang memilih untuk mengubah "standar" umum ini?

Jawaban langsung saya untuk pertanyaan saya adalah "tentu saja tidak";
kemudian, satu-satunya penjelasan yang dapat saya pikirkan mengenai "fitur eksklusif" ini untuk shell adalah "mereka hanya melakukan ini untuk memamerkan sedikit lagi cangkang keren mereka “.

Saya tidak tahu banyak tentang Zsh atau sejarahnya, dan kemungkinan besar teori sepele saya tentang ini tidak masuk akal.

Apakah ada penjelasan untuk ini? Atau hanya karena selera pribadi?

Jawaban yang Diterima:

  • Hampir semua array shell (Bourne, csh, tcsh, fish, rc, es, yash) dimulai dari 1. ksh adalah satu-satunya pengecualian yang saya tahu (bash baru saja menyalin ksh).
  • Bahasa yang paling banyak ditafsirkan pada saat itu (awal 90-an):awk , tcl setidaknya, dan alat yang biasanya digunakan dari shell (cut -f1-3 , head -n 3 , sort -k1,3 , cal 1 2015 , comm -1 ) mulai dari 1. sed , ed , vi beri nomor baris mereka dari 1…
  • zsh mengambil yang terbaik dari shell Bourne dan csh. Array shell Bourne [email protected] mulai dari 1. zsh konsisten dengan penanganan [email protected] (seperti di Bourne) atau $argv (seperti di csh). Lihat betapa membingungkannya dalam ksh di mana ${@:0:1} tidak memberi Anda parameter posisi pertama misalnya.
  • Shell adalah alat pengguna sebelum menjadi bahasa pemrograman. Masuk akal bagi sebagian besar pengguna untuk memiliki pertama elemen di $a[1] . Ini juga berarti bahwa jumlah elemen sama dengan indeks terakhir (dalam zsh seperti di kebanyakan shell lain kecuali ksh, array tidak jarang).
  • a[1] untuk elemen pertama konsisten dengan a[-1] untuk yang terakhir.
Terkait:Buat arsip 7z terpisah untuk setiap direktori di direktori saat ini dan juga paralelkan melalui GNU Paralel?

Jadi pertanyaan IMO seharusnya adalah:apa yang ada di kepala David Korn untuk membuat arraynya dimulai dari 0?


Linux
  1. Memulai dengan Zsh

  2. Menyesuaikan shell Bash

  3. Mengapa Server Memblokir IP Saya?

  1. Linux – Mengapa Antarmuka Ethernet Disebut Enp0s10 Bukannya Eth0?

  2. Mengapa "Sudo Su" Dalam Skrip Shell Tidak Menjalankan Skrip Lainnya Sebagai Root?

  3. Jika Proses Mewarisi Lingkungan Induk, Mengapa Kita Perlu Ekspor?

  1. Mengapa Tidak Ada yang Menggunakan Shell Bourne Sejati Sebagai /bin/sh?

  2. Arti dari $? Dalam Skrip Shell?

  3. dapatkan 5 karakter pertama dari setiap baris dalam skrip Shell