Estou ficando confuso sobre o papel que a divisão de palavras desempenha zsh
. Eu não fui exposto a esse conceito ao programar em C, Python ou MATLAB, e isso despertou meu interesse em saber por que a divisão de palavras parece ser algo específico da programação em shell.
Já li sobre a divisão de palavras neste e em outros sites, mas não encontrei uma explicação clara do conceito. A Wikipedia tem uma definição de divisão de palavras, mas parece não ter referências sobre como se aplica aos shells do Unix.
Aqui está um exemplo da minha confusão em zsh
:
Nas Perguntas frequentes sobre o Z Shell , li o seguinte:
3.1: Por
$var
quevar="foo bar"
não faz o que eu espero?Na maioria dos derivados de Bourne-shell, variáveis de várias palavras, como
var="foo bar"
são divididas em palavras, são passadas para um comando ou usadas em umfor foo in $var
loop. Por padrão, o zsh não tem esse comportamento: a variável permanece intacta. (Isso não é um bug! Veja abaixo.) A opçãoSH_WORD_SPLIT
existe para fornecer compatibilidade.
No entanto, no Manual do Z Shell , li o seguinte:
SH_WORD_SPLIT (-y) <K> <S>
Faz com que a divisão de campos seja realizada em expansões de parâmetros não citadas. Observe que esta opção não tem nada a ver com a divisão de palavras. (Consulte Expansão de parâmetros.)
Por que diz que nadaSH_WORD_SPLIT
tem a ver com a divisão de palavras? A divisão de palavras não é exatamente do que se trata?
"word1 word2 word3"
em listas / matrizes do formulário"word1" "word2" "word3"
? Também atualizei o OP com uma fonte específica de confusão no zsh.