Bash suporta variável indireta :
#!/bin/bash
MARCOMIN=1
MARCOMAX=3
ENZOMIN=1
ENZOMAX=3
GIOVANNIMIN=1
GIOVANNIMAX=3
VALUEMARCO=12
VALUEGIOVANNI=4
VALUEENZO=12
for i in MARCO ENZO GIOVANNI; do
for j in MIN MAX VALUE; do
varname="${i}${j}"
# For VALUE we need reverse order of i and j
[[ $j = VALUE ]] && varname="${j}${i}"
printf "%d is %s's %s\n" "${!varname}" "$i" "$j"
done
done
exit 0
Eu fiz um pouco mais com o laço interno e uso de printf
no lugar de echo
, mas a idéia central é que, dado um nome de variável foo
armazenado em outra variável bar
você pode obter o valor de $foo
fazendo ${!bar}
.
Mais: link