zsh:如何使用 $+commands 测试 zsh 上是否存在两个程序

Ser*_*ujo 1 zsh

在 zsh 中,我们可以使用以下命令测试程序是否存在:

(( $+commands[program] )) && program
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何使用commands两个程序而不是一个程序来测试是否存在?

小智 5

Subscript Flags在下面找到了这个man 1 zshparam(删除了部分,添加了强调):

\n
\n

r\xe2\x80\x83如果给出此标志,exp则将其视为模式

\n
\n
\n

i\xe2\x80\x83 类似r,

\n
\n
\n

I\xe2\x80\x83 与 类似i,但给出最后一个匹配的索引,或关联数组中所有可能的匹配键。失败时用 0 或空字符串替换关联数组。当测试不存在的值或键时,此标志是最好的。

\n
\n

因此,要测试 和program1program2您可以执行以下操作:

\n
(( $#commands[(I)(program1|program2)] == 2 ))\n
Run Code Online (Sandbox Code Playgroud)\n