Eu posso dar o -U
atributo para um array não associativo para que ele não contenha elementos duplicados:
% declare -U path
% path=( ~/bin $path )
% path=( ~/bin $path )
% echo $path
Aqui, embora eu tenha adicionado ~/bin
ao array path
duas vezes, o último contém apenas um ~/bin
elemento.
Estou procurando uma maneira de imprimir todos os atributos que podem ser dados a um parâmetro durante uma atribuição, incluindo esse -U
atributo.
Eu olhei para o typeset
comando em man zshbuiltins
, e encontrei este trecho:
Exceto quando as atribuições são feitas com nome=valor, usar +m força os parâmetros correspondentes e seus atributos a serem impressos, mesmo dentro de uma função.
Então, eu tentei executar estes comandos:
% declare -U path
% declare +m 'path'
Cuja saída é:
array path
Enquanto ele me diz o tipo do parâmetro (aqui um array), ele não me diz que tem o -U
atributo.
Existe outro comando que imprimiria todos os atributos de um parâmetro?
Você pode usar:
Eu esperaria
typeset -p path
(oudeclare
; prefirotypeset
, pois é mais portátil) fornecer essa informação. Isso não acontece nas versões atuais, o que parece um bug para mim ( Edit : agora corrigido ).Você também pode usar:
Para listar as variáveis com o
unique
atributo.