เพื่อเติมเต็มคำตอบที่มีอยู่และเป็นประโยชน์; tip of the hat to QZ ฝ่ายสนับสนุนที่สนับสนุนให้ฉันโพสต์คำตอบแยกต่างหาก:
มีกลไกที่แตกต่างกันสองแบบมาที่นี่:
(ก) ว่าcut
ตัวเองต้องใช้ตัวคั่น (พื้นที่ในกรณีนี้) ส่งผ่านไปยัง-d
ตัวเลือกที่จะเป็นข้อโต้แย้งที่แยกจากกันหรือไม่ว่าจะเป็นที่ยอมรับในการผนวกโดยตรง-d
เพื่อ
(b) วิธีที่เชลล์แยกวิเคราะห์อาร์กิวเมนต์ก่อนส่งผ่านไปยังคำสั่งที่เรียกใช้
(a) ตอบโดยอ้างจากแนวทาง POSIX สำหรับสาธารณูปโภค (เหมืองเน้น)
หากการสรุปโดยย่อของยูทิลิตี้มาตรฐานแสดงตัวเลือกที่มีตัวเลือกบังคับ - อาร์กิวเมนต์ [... ] แอปพลิเคชันที่สอดคล้องกันจะต้องใช้อาร์กิวเมนต์แยกต่างหากสำหรับตัวเลือกนั้นและตัวเลือกอาร์กิวเมนต์ของมัน อย่างไรก็ตามการดำเนินงานตามนโยบายจะยังอนุญาตให้มีการประยุกต์ใช้เพื่อระบุตัวเลือกและตัวเลือกการโต้แย้งในสตริงอาร์กิวเมนต์เดียวกันโดยไม่ต้องแทรกแซงตัวอักษร
ในคำอื่น ๆ : ในกรณีนี้เพราะ-d
's ตัวเลือกอาร์กิวเมนต์เป็นบังคับ , คุณสามารถเลือกได้ว่าจะระบุตัวคั่นเป็น :
- (s) EITHER: อาร์กิวเมนต์ที่แยกต่างหาก
- (ง) หรือ: เป็นค่าที่แนบมาโดยตรง
-d
เพื่อ
เมื่อคุณเลือก (s) หรือ (d) มันคือการแยกสตริงตัวอักษรของเชลล์ - (b) - ที่สำคัญ:
การอธิบายความเท่าเทียมกันโดยการประมวลผลแบบสตริงของเชลล์ :
การแก้ปัญหาcut
ทั้งหมดข้างต้นส่งผลให้เกิดสตริงที่แน่นอน (ในแต่ละกลุ่ม) ตามเวลาที่เห็น :
(s) : cut
เห็นว่า-d
เป็นอาร์กิวเมนต์ของตัวเองตามด้วยอาร์กิวเมนต์แยกต่างหากที่มีช่องว่างถ่าน - โดยไม่มีเครื่องหมายคำพูดหรือ\
คำนำหน้า!
(d) : cut
เห็น-d
พร้อมถ่านอวกาศ - ไม่มีคำพูดหรือ\
คำนำหน้า! - เป็นส่วนหนึ่งของอาร์กิวเมนต์เดียวกัน
เหตุผลที่รูปแบบในกลุ่มที่เกี่ยวข้องในท้ายที่สุดเหมือนกันคือสองเท่าขึ้นอยู่กับวิธีที่เชลล์แยกวิเคราะห์ตัวอักษรสตริง :
- เชลล์อนุญาตให้ระบุตัวอักษรตามที่เป็นอยู่ผ่านกลไกที่เรียกว่าquotingซึ่งสามารถมีได้หลายรูปแบบ :
- สตริงที่ยกมาเดี่ยว : เนื้อหาภายใน
'...'
จะถูกนำตัวอักษรและรูปแบบอาร์กิวเมนต์เดียว
- สตริงที่มีเครื่องหมายคำพูดคู่ : เนื้อหาภายใน
"..."
ยังเป็นอาร์กิวเมนต์เดี่ยวแต่อยู่ภายใต้การแก้ไข (ขยายการอ้างอิงตัวแปรเช่นการ$var
แทนที่คำสั่ง ( $(...)
หรือ`...`
) หรือการขยายเลขคณิต ( $(( ... ))
)
\
- การอ้างถึงอักขระแต่ละตัว : อักขระที่อยู่\
ก่อนหน้าทำให้อักขระนั้นถูกตีความว่าเป็นตัวอักษร
- อ้างจะสมบูรณ์โดยการกำจัดอ้างซึ่งหมายความว่าเมื่อเปลือกได้แยกวิเคราะห์บรรทัดคำสั่งก็เอาตัวละครที่อ้างจากการขัดแย้ง (การปิดล้อม
'...'
หรือ"..."
หรือ\
อินสแตนซ์) - จึงถูกคำสั่งเรียกไม่เคยเห็นตัวละครพูด