在 zsh 中,我们可以使用以下命令测试程序是否存在:
(( $+commands[program] )) && program
Run Code Online (Sandbox Code Playgroud)
我的问题是:如何使用commands两个程序而不是一个程序来测试是否存在?
小智 5
Subscript Flags在下面找到了这个man 1 zshparam(删除了部分,添加了强调):
\n\n\n
r\xe2\x80\x83如果给出此标志,exp则将其视为模式
\n\n\n
i\xe2\x80\x83 类似r,
\n\n\n
I\xe2\x80\x83 与 类似i,但给出最后一个匹配的索引,或关联数组中所有可能的匹配键。失败时用 0 或空字符串替换关联数组。当测试不存在的值或键时,此标志是最好的。
因此,要测试 和program1,program2您可以执行以下操作:
(( $#commands[(I)(program1|program2)] == 2 ))\nRun Code Online (Sandbox Code Playgroud)\n