miércoles, 28 de julio de 2010

Doble indirección de la variable bash

Varias veces me pasó que tengo la siguiente situación: Tengo varias variables, en varios sabores. Supongamos que quiero firmar varias applicaciones, en modo debug y en modo release, y tengo que elegir el archivo de firmas correcto para cada combinación:

PACMAN_RELEASE=cert4821.cer
MARIO_RELEASE=cert3532.cer
PONG_RELEASE=cert3323.cer
PACMAN_DEBUG=cert3546.cer
MARIO_DEBUG=cert5984.cer
PONG_DEBUG=cert3287.cer

Y quiero obtener el valor de una variable dadas sus partes:

getVal() {
app=$1
env=$2

eval RESULT=\${${app}_${env}}
}

Esa función obtiene el valor de la variable cuyas partes están formadas por los valores de las variables app y env.