第7章. リストとハッシュの処理
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
ご存知のように、コンピューターはデータのカウントや整理が得意だ。 、コードの組織化を使ってデータをカウントしたり整理したりすることができる。そのデータ構造の構成要素が配列だ。 bashには初期から配列があり、バージョン4.0で連想配列が追加された。 bashには歴史があり、後方互換性を維持する必要があるためでもあるが、開発者の中には物事を複雑にしすぎる傾向がある。 配列の実装は実はそれほど難しくなく、少し考えれば明確に書くことができる。
おさらいしておくと、コンピューター・サイエンスやプログラミングにおいて、配列とは、整数でインデックスまたは参照される複数の要素を含む変数のことである。 言い換えれば、配列はスカラーや単一の値の代わりにリストを含む変数である。 連想配列は、整数の代わりに文字列でインデックスが付けられたリストの一種である。 つまり、キーと値のペアのリストであり、基本的には辞書やルックアップテーブルを形成し、内部的にはキーがハッシュされてメモリ上の位置を形成する。 多かれ少なかれ。
bashのドキュメントではarrayや 連想配列という言葉を使っているが、 の経歴によってはリストや ハッシュ、あるいは辞書や dictsの方がなじみがあるかもしれないし、その方が入力しやすいし、言いやすいのは確かだ。 bashのドキュメントでは、他の人がindexと言うかもしれないところにsubscriptも使っている。 私たちは通常、一貫性を保つためにbashのドキュメントに従うが、ここではより一般的で理解しやすいリスト、ハッシュ、添え字を使うことにする。
リスト(配列)が先だったとはいえ、ハッシュ(連想配列)の方が若干単純だ。なぜなら、インデックス(添え字)の指定が必須であるため、その指定に迷うことがないからだ。 リストの整数添え字は暗黙の了解かもしれないし、それほど複雑ではないが、ハッシュでは意味をなさない演算子もある。
bashのリファレンスにあるように、"Bashは1次元のインデックス配列変数と連想配列変数を提供する"。 本当に醜い多次元構造を作成することは可能だが、bashでそれをやると、おそらく泣きを見ることになるだろう。 もし本当にその必要があるのなら、別の言語でやることを検討してほしい。
bashのハッシュ付きバージョンに気をつけよう
bashのバージョンには注意が必要だ。 先ほど言ったように、bashはバージョン4.0になるまでハッシュ(つまり連想配列)を持たなかったし、$mylist[${#mylist[*]}-1] (ここで${#mylist[*]} は要素カウント)を必要とする代わりに、$list[-1] (v4.3)で最後の整数要素を参照できるようにするなど、細部を整理するのに2、3バージョンかかった。 痛い。
Macのbash」で述べたように、Mac純正のbashはかなり古いので気をつけよう。 MacPortsやHomebrew、Finkで新しいバージョンを発見できるだろう。
POSIXではない
また、配列(リストとハッシュ)はPOSIXで指定されていないため、bash以外の移植性が気になる場合は、動作しない可能性があるため、使用には細心の注意が必要だ。例えば、Zshの構文は少し異なるため、これらの例はMac上でも動作しない。
共通点
リストとハッシュはbashでは非常に類似しているので、まず共通点から説明し、次に異なる点を説明する。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access