我可以将该-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
属性的变量。