(ダメな例)
$ 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 をつけると、文字列をコマンドとして実行できるので大丈夫なわけでした。