Referencias indirectas en Bash (y Zsh)

· Choan


Una cosita que recién he aprendido. Bash soporta referencias indirectas, esto es, podemos asignar a una variable el nombre de otra, para usar su valor indirectamente.

En breve:

 1#!/bin/env bash
 2
 3PASS_PRE="Frente popular de staging"
 4PASS_PRO="Frente popular de producción"
 5
 6environment="PRE"
 7chosen_pass_ref="PASS_$environment"
 8
 9# La clave está en la exclamación !
10echo "${!chosen_pass_ref}" # Frente popular de staging

Ojo cuidado. La sintaxis para esta misma operación en Zsh es diferente. En lugar de ! hemos de usar (P):

1#!/bin/env zsh
2
3# El script sería idéntico hasta la línea que sigue
4echo "${(P)chosen_pass_ref}" # Frente popular de staging