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