3
การแยกคำคืออะไร เหตุใดการเขียนโปรแกรมเชลล์จึงมีความสำคัญ
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มีอะไรจะทำอย่างไรกับการแยกคำ? การแยกคำไม่ใช่สิ่งที่ถูกต้องหรือไม่