Skip to Content
bash イディオム
book

bash イディオム

by Carl Albing, JP Vossen
May 2025
Intermediate to advanced
170 pages
2h 21m
Japanese
O'Reilly Media, Inc.
Content preview from bash イディオム

第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

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

Bash クックブック第2版

Bash クックブック第2版

Carl Albing, JP Vossen
UXデザインの法則 第2版 ―最高のプロダクトとサービスを支える心理学

UXデザインの法則 第2版 ―最高のプロダクトとサービスを支える心理学

Jon Yablonski, 相島 雅樹, 磯谷 拓也, 反中 望, 松村 草也

Publisher Resources

ISBN: 9798341651357