zshฉันได้รับสับสนเกี่ยวกับคำบทบาทแยกเล่นใน ฉันไม่ได้สัมผัสกับแนวคิดนี้เมื่อการเขียนโปรแกรมใน C, Python หรือ MATLAB และสิ่งนี้ได้กระตุ้นความสนใจของฉันว่าทำไมการแยกคำดูเหมือนจะเป็นสิ่งที่เฉพาะเจาะจงสำหรับการเขียนโปรแกรมเชลล์
ฉันได้อ่านเกี่ยวกับการแยกคำในเว็บไซต์นี้และเว็บไซต์อื่น ๆ มาก่อน แต่ไม่พบคำอธิบายที่ชัดเจนเกี่ยวกับแนวคิด Wikipedia มีคำจำกัดความของการแยกคำแต่ดูเหมือนจะไม่มีการอ้างอิงถึงวิธีการนำไปใช้กับ Unix shells
นี่คือตัวอย่างของความสับสนของฉันในzsh:
ในคำถามที่พบบ่อยของZ Shellฉันอ่านต่อไปนี้:
3.1: ทำไมไม่
$varที่var="foo bar"ไม่ได้ทำในสิ่งที่ผมคาดหวัง?ในอนุพันธ์บอร์นเชลล์ส่วนใหญ่ตัวแปรหลายคำเช่น
var="foo bar"แบ่งออกเป็นคำต่าง ๆ เมื่อส่งผ่านไปยังคำสั่งหรือใช้ในการfor foo in $varวนซ้ำ โดยค่าเริ่มต้น zsh ไม่ได้มีพฤติกรรมที่: ตัวแปรยังคงเหมือนเดิม (นี่ไม่ใช่ข้อผิดพลาด! ดูด้านล่าง) มีตัวเลือกSH_WORD_SPLITให้ใช้งานร่วมกันได้
อย่างไรก็ตามในคู่มือ Z Shellฉันอ่านต่อไปนี้:
SH_WORD_SPLIT (-y) <K> <S>ทำให้การแยกฟิลด์ดำเนินการกับการขยายพารามิเตอร์ที่ไม่ได้ระบุไว้ โปรดทราบว่าตัวเลือกนี้ไม่มีส่วนเกี่ยวข้อง กับการแยกคำ (ดูการขยายพารามิเตอร์)
ทำไมมันไม่บอกว่าSH_WORD_SPLITมีอะไรจะทำอย่างไรกับการแยกคำ? การแยกคำไม่ใช่สิ่งที่ถูกต้องหรือไม่
"word1 word2 word3"เป็นรายการ / อาร์เรย์ของรูปแบบ"word1" "word2" "word3"? ฉันได้ปรับปรุง OP ด้วยแหล่งที่มาของความสับสนใน zsh