如何打印zsh参数的所有属性?

如何打印zsh参数的所有属性?

我可以将该-U属性赋予非关联数组,以便它不能包含重复元素:

% declare -U path
% path=( ~/bin $path )
% path=( ~/bin $path )
% echo $path

在这里,尽管我已向~/bin数组添加了path两次,但后者仅包含一个~/bin元素。

我正在寻找一种方法来打印在分配期间可以赋予参数的所有属性,包括此-U属性。

我查看了typeset中的命令man zshbuiltins,发现了以下摘录:

除非使用 name=value 进行赋值,否则使用 +m 会强制打印匹配的参数及其属性,即使在函数内部也是如此。

所以,我尝试执行这些命令:

% declare -U path
% declare +m 'path'

其输出是:

array path

虽然它告诉我参数的类型(这里是一个数组),但它并没有告诉我它具有该-U属性。

是否还有另一个命令可以打印参数的所有属性?

答案1

您可以使用:

$ echo ${(t)path}
array-unique-special

我希望typeset -p path(或者declare;我更喜欢,typeset因为它更便携)提供该信息。但在当前版本中它并不存在,这对我来说似乎是一个错误(编辑现在已修复)。

您还可以使用:

typeset -U +

列出具有unique属性的变量。

相关内容