Em zsh, qual é o significado do idioma '$ == *'?

5

Encontrei o idioma $==* em várias soluções zsh que uso. Parece ser equivalente a $argv . Mas eu não sei como isso é interpretado. Você poderia explicar?

    
por agarrubio 10.09.2014 / 05:14

1 resposta

2

Esta é uma das expansões de parâmetros do Zsh aqui aplicada a $* :

${=spec}
Perform word splitting using the rules for SH_WORD_SPLIT during the evaluation of spec, but regardless of whether the parameter appears in double quotes; if the ‘=’ is doubled, turn it off. This forces parameter expansions to be split into separate words before substitution, using IFS as a delimiter. This is done by default in most other shells.

Veja a resposta detalhada de Gilles a O que é a divisão de palavras? Por que é importante na programação de shell para o contexto.

Normalmente, zsh não faz divisão de palavras por padrão, então, presumivelmente, isso é para garantir que $* não seja dividido mesmo quando a opção SH_WORD_SPLIT tiver sido ativada de uma forma ou de outra (por exemplo, por meio de emulate sh ).

No entanto, na maioria dos casos, você preferiria usar "$@" (observe as aspas importantes aqui) em vez de $==* . $==* (como $* quando SH_WORD_SPLIT está desativado) expande apenas para os parâmetros posicionais não vazios , enquanto "$@" expande para todos os parâmetros posicionais (independentemente de SH_WORD_SPLIT e que funciona em todos os shells parecidos com Bourne).

    
por 10.09.2014 / 06:10

Tags