GNU/Linux >> Linux の 問題 >  >> Linux

Zsh配列の最初の要素が0ではなく1でインデックス付けされる理由

現代のプログラミングおよびスクリプト言語での私の経験から、ほとんどのプログラマーは一般に、配列の最初の要素をで参照することに慣れていると思います。 インデックスとして。
1を使用することに実質的な利点はありますか ?

Zsh以外の言語が配列と同じように動作することを聞いたことがあると思います。同様に便利なので、私には問題ありません。
ただし、以前にリリースされ、広く使用されているkshやbashなどのシェルスクリプト言語はすべて0を使用しているため、理由 誰かがこの一般的な「標準」を変更することを選択しますか?

私の質問に対する私の直接の答えは「もちろんそうではありません」です。
それで、シェルに対するこのやや「排他的な機能」に関して私が考えることができる唯一の説明は、「彼らはこれを見せびらかすためにこれをしただけです。もう少しクールなシェル 「。

ただし、Zshもその歴史についてもよくわかりません。また、これに関する私の些細な理論が意味をなさない可能性が高いです。

これについての説明はありますか?それとも個人的な趣味からですか?

承認された回答:

  • 事実上すべてのシェル配列(Bourne、csh、tcsh、fish、rc、es、yash)は1から始まります。私が知っている唯一の例外はkshです(bashはkshをコピーしたばかりです)。
  • 当時(90年代初頭)に最も解釈された言語:awktcl 少なくとも、シェルから通常使用されるツール(cut -f1-3head -n 3sort -k1,3cal 1 2015comm -1 )1から開始します。sededvi 1から行に番号を付けます…
  • zshは、Bourneシェルとcshを最大限に活用します。 Bourneシェル配列[email protected] 1から開始します。zshは[email protected]の処理と一貫性があります (Bourneのように)または$argv (cshのように)。 kshでそれがどれほど混乱しているかを見てください ここで、${@:0:1} たとえば、最初の位置パラメータは提供されません。
  • シェルは、プログラミング言語になる前のユーザーツールです。ほとんどのユーザーが最初を持つことは理にかなっています $a[1]の要素 。また、要素の数が最後のインデックスと同じであることも意味します(kshを除く他のほとんどのシェルと同様にzshでは、配列はではありません。 まばらです。
  • a[1] 最初の要素はa[-1]と一致しています 最後に。
関連:現在のディレクトリのディレクトリごとに個別の7zアーカイブを作成し、さらにGNU Parallelを介して並列化しますか?

したがって、IMOの質問は、むしろ次のようになります。配列を0から開始するために、David Kornの頭に何が入ったのですか?


Linux
  1. Zshの使用を開始する

  2. Bashシェルのカスタマイズ

  3. Bashrcが現在のシェルがインタラクティブであるかどうかをチェックするのはなぜですか?

  1. シェルコマンドを使用してASCIIファイルの最初のN行を削除するにはどうすればよいですか?

  2. スクリプト ファイルの先頭に #!/bin/bash を配置する必要があるのはなぜですか?

  3. シェル スクリプトの各行から最初の 5 文字を取得する

  1. 人々へのPower(Shell)

  2. サーバーが私のIPをブロックしたのはなぜですか?

  3. bash スクリプトと zsh シェルでの配列の動作 (開始インデックス 0 または 1?)