bashには連想配列がないので、変数に入っている名前の変数に代入してみる。
key=hoge value=aaa eval $key="$value"
これは hoge=aaaと同じ結果になる。
key側について、変な変数を上書きするのも怖いので、制限をつけてみる。
case "$key" in hoge|piyo|fuga) eval $key="$value" ;; esac
value側についても、なんらかのサニタイズのようなことをする必要があるが 非常に面倒なので、原理的にコマンドインジェクションが発生しない方法が見つかるまでevalの使用そのものをやめよう