Mi sto confondendo il ruolo svolto dalla divisione delle parole zsh
. Non sono stato esposto a questo concetto durante la programmazione in C, Python o MATLAB, e questo ha suscitato il mio interesse sul perché la suddivisione delle parole sembra essere qualcosa di specifico per la programmazione della shell.
Ho già letto della divisione delle parole su questo e altri siti prima, ma non ho trovato una chiara spiegazione del concetto. Wikipedia ha una definizione di suddivisione delle parole ma non sembra avere riferimenti su come si applica alle shell Unix.
Ecco un esempio della mia confusione in zsh
:
Nelle FAQ di Z Shell , ho letto quanto segue:
3.1: Perché
$var
dovevar="foo bar"
non fare ciò che mi aspetto?Nella maggior parte dei derivati della shell Bourne, le variabili a più parole come quelle
var="foo bar"
vengono divise in parole quando passate a un comando o utilizzate in unfor foo in $var
ciclo. Per impostazione predefinita, zsh non ha questo comportamento: la variabile rimane intatta. (Questo non è un bug! Vedi sotto.) L'opzioneSH_WORD_SPLIT
esiste per fornire compatibilità.
Tuttavia, nel manuale Z Shell , ho letto quanto segue:
SH_WORD_SPLIT (-y) <K> <S>
Fa sì che la divisione dei campi venga eseguita su espansioni di parametri non quotate. Nota che questa opzione non ha nulla a che fare con la suddivisione delle parole. (Vedi Espansione parametri.)
Perché dice che nonSH_WORD_SPLIT
ha nulla a che fare con la suddivisione delle parole? La suddivisione delle parole non è esattamente ciò di cui si tratta?
"word1 word2 word3"
in liste / matrici del modulo"word1" "word2" "word3"
? Ho anche aggiornato l'OP con una specifica fonte di confusione in zsh.