Como imprimir todos os atributos de um parâmetro zsh?

3

Eu posso atribuir o atributo -U a um array não-associativo para que ele não possa conter elementos duplicados:

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

Aqui, apesar de eu ter adicionado ~/bin ao array path duas vezes, o último contém apenas um elemento ~/bin .

Estou procurando uma maneira de imprimir todos os atributos que podem ser atribuídos a um parâmetro durante uma atribuição, incluindo este atributo -U .

Eu olhei para o comando typeset em man zshbuiltins e encontrei este trecho:

Except when assignments are made with name=value, using +m forces the matching parameters and their attributes to be printed, even inside a function.

Então, tentei executar estes comandos:

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

De quem é a saída:

array path

Enquanto ele me diz o tipo do parâmetro (aqui uma matriz), ele não me diz que tem o atributo -U .

Existe outro comando que imprimiria todos os atributos de um parâmetro?

    
por user938271 24.09.2018 / 00:57

1 resposta

3

Você pode usar:

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

Eu esperaria typeset -p path (ou declare ; prefiro typeset como é mais portátil) para fornecer essa informação. Não nas versões atuais, o que parece ser um erro para mim ( Editar : agora fixo ).

Você também pode usar:

typeset -U +

Para listar as variáveis com o atributo unique .

    
por 24.09.2018 / 10:46

Tags