正在查看 this example from pyenv-virtualenv :
pyenv-virtualenv
typeset -g -a precmd_functions if [[ -z \$precmd_functions[(r)_pyenv_virtualenv_hook] ]]; then precmd_functions=(_pyenv_virtualenv_hook \$precmd_functions); fi
_pyenv_virtualenv_hook 是一个函数 declared earlier in the file .
_pyenv_virtualenv_hook
我相信这个代码正在检查 _pyenv_virtualenv_hook 已注入 precmd_functions ,但我不懂语法。
precmd_functions
目的是什么 (r) 在数组查找中?
(r)
这个 Zsh Guide Chapter on Substitutions 解释了 (r) 标志:
这个 (r) flag接受一个模式并替换匹配的数组的第一个元素。
因此,该片段执行了您描述的操作:查看元素是否在数组中(即查找返回非零值)。它被进一步混淆,因为您引用的代码被分配给要计算的字符串,因此美元符号被转义( \$ ).
\$