bash の ${!variable} に対応する zsh

bash の ${!variable} に対応する zsh

私はちょうど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

2番目のifは、カーネルに応じてifが$LD_LIBRARY_PATH0でないか、ifが0でないかを明確にテストする必要があります。$DYLD_LIBRARY_PATH次に、その変数を設定または拡張します。

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

よりエレガントな解決策があるかもしれません。

おすすめ記事