9
7

More than 5 years have passed since last update.

zshにおける連想配列の使い方

Last updated at Posted at 2014-02-23

Zshには連想配列があります。基本的な使い方:

% typeset -A map  # 連想配列型を定義
% echo ${(t)map}  # mapの型を表示
association       # 連想配列の型はassociation
% map=(a 10 b 20) # mapの定義、(key1 val1 key2 val2)のようにする
% echo $map
10 20             # 値のみが表示される
% echo $map[a]    # key(a)に対応するvalue(10)が表示される
10
% echo ${(k)map}  # (k)は連想配列のkeyの一覧を取得するフラグ
a b

ここで(t),(k)は変数展開フラグと呼ばれるもので、
より詳しくはzshの本6.7節で解説されている。

さらにパターンも記述できる:

% map=("a*" 10 "b*" 20) # keyにパターンを記述できる
% echo ${(k)map}        
b* a*
% echo $map[abcd]       # そのままではパターンマッチを行わない

% echo $map[(k)abcd]    # keyの部分に(k)を使用するとマッチを行う
10
% echo $map[(k)bcd]
20

こちらの(k)は添字用変数展開フラグと呼ばれ、
パターン(上述の"a*, b*")にマッチするキーの値を返す。
変数展開フラグ(上述)の(k)とは異なるので注意

9
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7