expansão de variável indireta em POSIX como feito em bash? [fechadas]

9

É possível, ou há algum truque elegante para fazer uma expansão de variável indireta no POSIX, como pode ser feito no Bash?

Para o contexto, estou tentando fazer o seguinte:

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

EDIT: Para esclarecer, gostaria de acessar as variáveis do shell que começam com map_ .

    
por Dashed 30.01.2014 / 09:29

1 resposta

5

O hack é usar 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
    
por 30.01.2014 / 10:20