Singlequote dan backslash

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

man bash mengatakan:

Menutup karakter dalam tanda kutip tunggal mempertahankan nilai literal setiap karakter dalam tanda kutip. Kutipan tunggal mungkin tidak terjadi di antara tanda kutip tunggal, bahkan ketika didahului oleh garis miring terbalik.

Mengapa itu bekerja di echoperintah?

mook765
sumber

Jawaban:

16

Kutipan tunggal '...'berbeda dengan kutipan tunggal dolar $'...'. Yang pertama tidak mendukung backslashing, sedangkan yang terakhir menggunakan spesifikasi ANSI C.

choroba
sumber
14

chorobaJawabannya sepenuhnya benar, berikut detailnya dari man bash:

Kata-kata dalam bentuk $ 'string' diperlakukan secara khusus. Kata diperluas ke
string, dengan karakter backslash-escaped diganti seperti yang ditentukan oleh ANSI C
standar. Urutan backslash escape, jika ada, diterjemahkan sebagai berikut:
              \ sebuah peringatan (bel)
              \ backspace
              \ e
              \ E karakter pelarian
              bentuk umpan
              \ n baris baru
              carriage return
              \ t tab horizontal
              \ v tab vertikal
              \\ backslash
              Kutipan tunggal
              \ "kutipan ganda
              \ tanda tanya
              \ nn karakter delapan-bit yang nilainya adalah nilai oktal
                     nnn (satu hingga tiga digit)
              \ xHH karakter delapan bit yang nilainya heksadesimal
                     nilai HH (satu atau dua digit hex)
              \ uHHHH karakter Unicode (ISO / IEC 10646) yang nilainya adalah
                     nilai heksadesimal HHHH (satu hingga empat digit hex)
              \ UHHHHHHHH
                     karakter Unicode (ISO / IEC 10646) yang nilainya adalah
                     nilai heksadesimal HHHHHHHH (satu hingga delapan digit hex)
              \ cx karakter kontrol-x

Itu sebabnya!

mook765
sumber