Pojedynczy cytat i ukośnik odwrotny

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

man bash mówi:

Umieszczanie znaków w pojedynczych cudzysłowach zachowuje dosłowną wartość każdego znaku w cudzysłowach. Pojedynczy cytat może nie wystąpić między pojedynczymi cudzysłowami, nawet jeśli poprzedzony jest odwrotnym ukośnikiem.

Dlaczego więc działa w echopoleceniu?

mook765
źródło

Odpowiedzi:

16

Pojedyncze cytaty '...'różnią się od pojedynczych kwotowań w dolarach $'...'. Ten pierwszy nie obsługuje odwrotnego ukośnika, a drugi używa specyfikacji ANSI C.

choroba
źródło
14

chorobaodpowiedź jest całkowicie poprawna, oto szczegóły z man bash:

Słowa w postaci $ „string” są traktowane specjalnie. Słowo rozwija się do
ciąg znaków, z zastąpionymi znakami odwrotnego ukośnika znakami określonymi przez ANSI C.
standard. Sekwencje specjalne odwrotnego ukośnika, jeśli występują, są dekodowane w następujący sposób:
              \ alert (dzwonek)
              \ b Backspace
              \mi
              \ E znak ucieczki
              kanał informacyjny
              \ n nowa linia
              powrót karetki
              Zakładka pozioma
              \ v zakładka pionowa
              \\ ukośnik wsteczny
              pojedynczy cytat
              \" cudzysłów
              \? znak zapytania
              \ nn ośmiobitowy znak, którego wartość jest wartością ósemkową
                     nnn (jedna do trzech cyfr)
              \ xHH ośmiobitowy znak, którego wartość jest szesnastkowa
                     wartość HH (jedna lub dwie cyfry szesnastkowe)
              \ uHHHH znak Unicode (ISO / IEC 10646), którego wartość to
                     wartość szesnastkowa HHHH (jedna do czterech cyfr szesnastkowych)
              \ UHHHHHHHH
                     znak Unicode (ISO / IEC 10646), którego wartość to
                     wartość szesnastkowa HHHHHHHH (jedna do ośmiu cyfr szesnastkowych)
              \ cx znak Control-x

Dlatego!

mook765
źródło