Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2914

[bash]文字列から連想配列を作る

$
0
0

(ダメな例)

$ cat tamesi.sh
#!/bin/sh
data="[suzuki]=hoge2 [tanaka]=95 [yamamoto]=90"
declare -A exam=(${data})
echo ${exam["suzuki"]}

$ sh tamesi.sh
tamesi.sh: line 6: exam: [suzuki]=hoge2: must use subscript when assigning associative array
tamesi.sh: line 6: exam: [tanaka]=95: must use subscript when assigning associative array
tamesi.sh: line 6: exam: [yamamoto]=90: must use subscript when assigning associative array

must use subscript when assigning associative arrayというエラーが出て怒られてますね。subscriptとは「添え字、index」のことです。
日本語環境だと 連想配列を設定するときには添字をつけなければいけませんと怒られるようです。


(よい例)

$ cat tamesi.sh
#!/bin/sh
data="[suzuki]=hoge2 [tanaka]=95 [yamamoto]=90"
eval declare -A exam=(${data})
echo ${exam["suzuki"]}

$ sh tamesi.sh
hoge2

文字列を渡しただけだとbashさんはスペースで区切られた [suzuki]=hoge2までを一つの要素と認識するけど、これに対応する添字がなく、 -Aには不適切…ということみたいです。

eval をつけると、文字列をコマンドとして実行できるので大丈夫なわけでした。


Viewing all articles
Browse latest Browse all 2914

Trending Articles