Existem algumas peças diferentes para o que você parece estar tentando fazer.
Para unset
de uma variável cujo nome está em outra variável, você pode usar -v
so
unset -v "$currentEnvVar"
para essa parte. Veja aqui
Para atribuir a uma variável, você pode usar printf
como
printf -v "$currentEnvVar" %s 'new value'
Para imprimir o valor, você pode usar uma referência indireta como
printf 'The value is %s\n' "${!currentEnvVar}"
Na expansão de contraventamento, se o primeiro caractere for !
, o restante será tratado como o nome de uma variável que contém o nome da variável que você deseja realmente usar.
Você também pode usar uma matriz associativa , se ela atender às suas necessidades :
declare -A envVarsByName
envVarsByName[$currentEnvVar]='new value'
printf 'New val: %s\n' "${envVarsByName[$currentEnvVar]]}"