bash에서와 같이 POSIX의 간접 ​​변수 확장? 것이 가능합니까? 컨텍스트를 위해 다음을 수행하려고합니다. for key

Bash에서와 같이 POSIX에서 간접 변수 확장을 수행하는 것이 가능합니까?

컨텍스트를 위해 다음을 수행하려고합니다.

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

편집 : 명확히하기 위해로 시작하는 쉘 변수에 액세스하고 싶습니다 map_.



답변

해킹은 다음을 사용하는 것입니다 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


답변