代码之家  ›  专栏  ›  技术社区  ›  2rs2ts

zsh中奇怪的数组查找

  •  0
  • 2rs2ts  · 技术社区  · 10 年前

    正在查看 this example from 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 已注入 precmd_functions ,但我不懂语法。

    目的是什么 (r) 在数组查找中?

    1 回复  |  直到 10 年前
        1
  •  1
  •   kba    10 年前

    这个 Zsh Guide Chapter on Substitutions 解释了 (r) 标志:

    这个 (r) flag接受一个模式并替换匹配的数组的第一个元素。

    因此,该片段执行了您描述的操作:查看元素是否在数组中(即查找返回非零值)。它被进一步混淆,因为您引用的代码被分配给要计算的字符串,因此美元符号被转义( \$ ).

    推荐文章