Singlequote và dấu gạch chéo ngược


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

man bash nói:

Các ký tự kèm theo trong dấu ngoặc đơn duy trì giá trị theo nghĩa đen của từng ký tự trong dấu ngoặc kép. Một trích dẫn có thể không xảy ra giữa các trích dẫn đơn, ngay cả khi trước dấu gạch chéo ngược.

Tại sao nó hoạt động trong echo-command sau đó?

Câu trả lời:


16

Báo giá đơn '...'khác với báo giá đơn đô la $'...'. Cái trước không hỗ trợ bất kỳ dấu gạch chéo ngược nào, trong khi cái sau sử dụng đặc tả ANSI C.


14

chorobaCâu trả lời là hoàn toàn chính xác, ở đây các chi tiết từ man bash:

Các từ có dạng $ 'chuỗi' được xử lý đặc biệt. Từ mở rộng thành
chuỗi, với các ký tự thoát dấu gạch chéo ngược được thay thế theo quy định của ANSI C
Tiêu chuẩn. Các chuỗi thoát dấu gạch chéo ngược, nếu có, được giải mã như sau:
              \ một cảnh báo (chuông)
              \ b backspace
              \ e
              \ E một nhân vật thoát
              nguồn cấp dữ liệu mẫu
              \ n dòng mới
              xe trở về
              tab ngang
              \ v tab dọc
              dấu gạch chéo ngược
              trích dẫn
              \ "trích dẫn kép
              \? dấu chấm hỏi
              \ nnn ký tự tám bit có giá trị là giá trị bát phân
                     nnn (một đến ba chữ số)
              \ xHH ký tự tám bit có giá trị là thập lục phân
                     giá trị HH (một hoặc hai chữ số hex)
              \ uHHHH ký tự Unicode (ISO / IEC 10646) có giá trị là
                     giá trị thập lục phân HHHH (một đến bốn chữ số hex)
              \ UHHHHHHH
                     ký tự Unicode (ISO / IEC 10646) có giá trị là
                     giá trị thập lục phân HHHHHHHH (một đến tám chữ số hex)
              \ cx một ký tự control-x

Đó là lý do!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.