Je suis confus quant au rôle que joue le fractionnement de mots zsh
. Je n'ai pas été exposé à ce concept lors de la programmation en C, Python ou MATLAB, et cela a déclenché mon intérêt de savoir pourquoi le fractionnement de mots semble être quelque chose de spécifique à la programmation shell.
J'ai déjà lu sur le fractionnement de mots sur ce site et sur d'autres sites, mais je n'ai pas trouvé d'explication claire du concept. Wikipedia a une définition du fractionnement de mots mais ne semble pas avoir de références sur la façon dont il s'applique aux shells Unix.
Voici un exemple de ma confusion dans zsh
:
Dans la FAQ Z Shell , j'ai lu ce qui suit:
3.1: Pourquoi ne
$var
oùvar="foo bar"
pas ce que je pense?Dans la plupart des dérivés Bourne-shell, les variables de plusieurs mots telles que
var="foo bar"
sont divisées en mots lorsqu'elles sont passées à une commande ou utilisées dans unefor foo in $var
boucle. Par défaut, zsh n'a pas ce comportement: la variable reste intacte. (Ce n'est pas un bug! Voir ci-dessous.) L'optionSH_WORD_SPLIT
existe pour assurer la compatibilité.
Cependant, dans le manuel Z Shell , j'ai lu ce qui suit:
SH_WORD_SPLIT (-y) <K> <S>
Entraîne le fractionnement des champs à effectuer des extensions de paramètres sans guillemets. Notez que cette option n'a rien à voir avec le fractionnement de mots. (Voir Extension des paramètres.)
Pourquoi dit-il que cela SH_WORD_SPLIT
n'a rien à voir avec le fractionnement de mots? Le mot ne divise-t-il pas précisément de quoi il s'agit?
"word1 word2 word3"
en listes / tableaux du formulaire"word1" "word2" "word3"
? J'ai également mis à jour l'OP avec une source spécifique de confusion dans zsh.