เครื่องหมายคำพูดเดี่ยวและแบ็กสแลช


10
~$ echo $'\'test'
'test

man bash พูดว่า:

การใส่อักขระในเครื่องหมายคำพูดเดียวจะคงคุณค่าของตัวอักษรแต่ละตัวไว้ในเครื่องหมายคำพูด เครื่องหมายคำพูดเดี่ยวอาจไม่เกิดขึ้นระหว่างเครื่องหมายคำพูดเดี่ยวแม้ว่าจะนำหน้าด้วยเครื่องหมายทับขวา

ทำไมมันทำงานในechoคำสั่ง - แล้ว?

คำตอบ:


16

ราคาเดียวจะแตกต่างกันไปราคาเดียวดอลล่า'...' $'...'อดีตไม่สนับสนุน backslashing ใด ๆ ในขณะที่หลังใช้ข้อกำหนด ANSI C


14

chorobaคำตอบของถูกต้องทั้งหมดนี่คือรายละเอียดจากman bash:

คำของฟอร์ม 'string' ได้รับการปฏิบัติเป็นพิเศษ คำว่าขยายออกไป
สตริงที่มีอักขระที่ใช้เครื่องหมายแบคสแลชที่ถูกแทนที่ถูกแทนที่ตามที่ระบุโดย ANSI C
มาตรฐาน. Backslash escape sequences ถ้ามีจะถูกถอดรหัสดังนี้:
              \ a การแจ้งเตือน (เบลล์)
              \ b backspace
              \ E
              \ E ตัวละครหนี
              ฟีดฟอร์ม \ f
              \ n บรรทัดใหม่
              รับคืนรถ
              \ t แท็บแนวนอน
              \ v แท็บแนวตั้ง
              \\ แบ็กสแลช
              เครื่องหมายคำพูดเดี่ยว
              \ "เครื่องหมายคำพูดคู่
              \? เครื่องหมายคำถาม
              \ nnn อักขระแปดบิตที่มีค่าคือค่าฐานแปด
                     nnn (หนึ่งถึงสามหลัก)
              \ xHH อักขระแปดบิตที่มีค่าเป็นเลขฐานสิบหก
                     ค่า HH (หนึ่งหรือสองหลักฐานสิบหก)
              \ uHHHH อักขระ Unicode (ISO / IEC 10646) ที่มีค่าคือ
                     ค่าเลขฐานสิบหก HHHH (หนึ่งถึงสี่หลักสิบหกหลัก)
              \ UHHHHHHHH
                     อักขระ Unicode (ISO / IEC 10646) ที่มีค่าคือ
                     ค่าเลขฐานสิบหก HHHHHHHH (หนึ่งถึงแปดหลักแปดหลัก)
              \ cx ตัวควบคุม -x

นั่นเป็นเหตุผล!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.