web-dev-qa-db-ja.com

bashで行われるようなPOSIXでの間接変数拡張?

Bashで実行できるように、POSIXで間接変数拡張を実行するためのエレガントなハックはありますか?

コンテキストのために、私は次のことをしようとしています:

for key in ${!map_*}
do
    # do something
done

編集:明確にするために、map_で始まるシェル変数にアクセスしたいと思います。

11
Dashed

ハックはevalを使用することです:

aaa=1
aab=2
aac=3

eval_like() {
    pattern=$1
    vars=`set |grep "^$pattern.*=" | cut -f 1 -d '='`
    for v in $vars; do
        eval vval="\$$v"
        echo $vval
    done
}   

for i in `eval_like aa`; do
    echo $i
done
6
Zaar Hai