zsh equivalente para $ {! variable} [duplicado] de bash

0

Eu apenas tropecei em um script com trabalhos no bash mas não no 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

o segundo se aparentemente deveria testar, dependendo do kernel, se $LD_LIBRARY_PATH é diferente de zero, ou se $DYLD_LIBRARY_PATH é diferente de zero. E, em seguida, defina ou expanda a respectiva variável.

Como eu faria o mesmo em zsh? E existe uma versão que funciona em zsh e bash?

    
por pseyfert 24.10.2016 / 18:37

1 resposta

0

Aparece $(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

embora possa haver uma solução mais elegante.

    
por 24.10.2016 / 18:37

Tags