Me estoy confundiendo sobre el papel que juega la división de palabras zsh
. No he estado expuesto a este concepto al programar en C, Python o MATLAB, y esto ha despertado mi interés de por qué la división de palabras parece ser algo específico de la programación de shell.
He leído sobre la división de palabras en este y otros sitios antes, pero no he encontrado una explicación clara del concepto. Wikipedia tiene una definición de división de palabras, pero no parece tener referencias sobre cómo se aplica a los shells de Unix.
Aquí hay un ejemplo de mi confusión en zsh
:
En las preguntas frecuentes de Z Shell , leo lo siguiente:
3.1: ¿Por qué
$var
dóndevar="foo bar"
no hace lo que espero?En la mayoría de los derivados de Bourne-shell, las variables de varias palabras, como por ejemplo,
var="foo bar"
se dividen en palabras cuando se pasan a un comando o se usan en unfor foo in $var
bucle. Por defecto, zsh no tiene ese comportamiento: la variable permanece intacta. (¡Esto no es un error! Consulte a continuación).SH_WORD_SPLIT
Existe la opción de proporcionar compatibilidad.
Sin embargo, en el Manual de Z Shell , leí lo siguiente:
SH_WORD_SPLIT (-y) <K> <S>
Hace que la división de campo se realice en expansiones de parámetros sin comillas. Tenga en cuenta que esta opción no tiene nada que ver con la división de palabras. (Ver Expansión de parámetros).
¿Por qué dice que noSH_WORD_SPLIT
tiene nada que ver con la división de palabras? ¿No es la división de palabras precisamente de lo que se trata todo esto?
"word1 word2 word3"
en listas / matrices del formulario"word1" "word2" "word3"
? También he actualizado el OP con una fuente específica de confusión en zsh.