我的 zsh 脚本采用以下参数:
./script --connect server --foo 3 --bar 5 name
--foo
并--bar
采用整数,name
是唯一的非选项参数,并且--connect
应该从预定义的服务器列表中完成。我陷入了--connect
尝试定义服务器列表的部分。
_arguments -S : \
'--foo' \
'--bar' \
'--connect' \
'*:server:->servers'
_servers() {
local -a server_list
server_list=(
'server1'
'server2'
)
_describe -t server-names "server name" server_list
}
当我输入 时,它会提供选项-<TAB>
,但在 后它不会向我提供服务器--connect
。另外,我不知道如何合并该name
参数,这是非选项参数。
我还需要指定--foo
并--bar
需要一个整数
我编写了一个似乎具有正确行为的完成脚本。我不确定一切是否正确,这个脚本可能还可以改进。
例如,如果所有选项都是必需的并且
name
必须仅在所有选项的末尾建议,那么我不知道该怎么做。name
如果选项没有写在 之前,即使在 之后也会建议这些选项。如果您不希望用户在 后看到选项建议name
,请将脚本的第 12 行替换为:这是完成脚本: