Equivalente de zsh para ${!variable} de bash

Equivalente de zsh para ${!variable} de bash

Me acabo de topar con un script que funciona en bash pero no en zsh:

if [ Darwin = `uname` ]; then
   library_path=DYLD_LIBRARY_PATH
else
   library_path=LD_LIBRARY_PATH
fi
if [ -z "${!library_path}" ]; then
   eval ${library_path}=${thisdir}/lib64:${thisdir}/lib; export ${library_path}
else
   eval ${library_path}=${thisdir}/lib64:${thisdir}/lib:${!library_path}; export ${library_path}
fi

el segundo if aparentemente debería probar, dependiendo del kernel, si $LD_LIBRARY_PATHes distinto de cero o si $DYLD_LIBRARY_PATHes distinto de cero. Y luego establezca o expanda la variable respectiva.

¿Cómo haría lo mismo en zsh? ¿Y existe una versión que funcione en zsh y bash?

Respuesta1

Parece que $(eval echo \$\{$library_path\})funciona:

if [ Darwin = `uname` ]; then
   library_path=DYLD_LIBRARY_PATH
else
   library_path=LD_LIBRARY_PATH
fi
if [ -z $(eval echo \$\{$library_path\}) ]; then
   eval ${library_path}=${thisdir}/lib64:${thisdir}/lib; export ${library_path}
else
   eval ${library_path}=${thisdir}/lib64:${thisdir}/lib:$(eval echo \$\{$library_path\}); export ${library_path}              
fi

aunque podría haber una solución más elegante.

información relacionada