Saya semakin bingung tentang peran kata splitting zsh
. Saya belum terkena konsep ini ketika pemrograman dalam C, Python atau MATLAB, dan ini telah memicu minat saya mengapa pemisahan kata tampaknya menjadi sesuatu yang spesifik untuk pemrograman shell.
Saya telah membaca tentang pemisahan kata pada situs ini dan situs lain sebelumnya, tetapi belum menemukan penjelasan yang jelas tentang konsep ini. Wikipedia memiliki definisi pemisahan kata tetapi tampaknya tidak memiliki referensi tentang bagaimana ia berlaku untuk shell Unix.
Berikut ini contoh kebingungan saya di zsh
:
Dalam Z Shell FAQ , saya membaca yang berikut:
3.1: Mengapa di
$var
manavar="foo bar"
tidak melakukan apa yang saya harapkan?Dalam sebagian besar turunan Bourne-shell, variabel multi-kata seperti
var="foo bar"
dipecah menjadi kata-kata saat diteruskan ke perintah atau digunakan dalam satufor foo in $var
lingkaran. Secara default, zsh tidak memiliki perilaku itu: variabel tetap utuh. (Ini bukan bug! Lihat di bawah.) PilihanSH_WORD_SPLIT
ada untuk memberikan kompatibilitas.
Namun, dalam Manual Z Shell , saya membaca yang berikut:
SH_WORD_SPLIT (-y) <K> <S>
Menyebabkan pemisahan bidang dilakukan pada ekspansi parameter yang tidak dikutip. Perhatikan bahwa opsi ini tidak ada hubungannya dengan pemisahan kata. (Lihat Ekspansi Parameter.)
Mengapa mengatakan bahwa SH_WORD_SPLIT
memiliki ada hubungannya dengan kata membelah? Bukankah kata pemecahan tepat tentang apa ini?
"word1 word2 word3"
menjadi daftar / array formulir"word1" "word2" "word3"
? Saya juga telah memperbarui OP dengan sumber kebingungan khusus di zsh.