zsh эквивалент для bash ${!variable}

zsh эквивалент для bash ${!variable}

Я только что наткнулся на скрипт, который работает в bash, но не в 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

второй if, по-видимому, должен проверить, в зависимости от ядра, if $LD_LIBRARY_PATHis non zero, или if $DYLD_LIBRARY_PATHis non zero. А затем либо установить, либо расширить соответствующую переменную.

Как сделать то же самое в zsh? И есть ли версия, которая работает в zsh и bash?

решение1

Кажется, это $(eval echo \$\{$library_path\})работает:

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

хотя может быть и более элегантное решение.

Связанный контент