Singlequote und Backslash

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

man bash sagt:

Durch das Einschließen von Zeichen in einfache Anführungszeichen bleibt der Literalwert jedes Zeichens in den Anführungszeichen erhalten. Ein einfaches Anführungszeichen darf nicht zwischen einfachen Anführungszeichen stehen, selbst wenn ein Backslash vorangestellt ist.

Warum funktioniert es dann im echoBefehl-?

mook765
quelle

Antworten:

16

Einfache Anführungszeichen '...'unterscheiden sich von einfachen Anführungszeichen in US-Dollar $'...'. Ersteres unterstützt kein Backslashing, während letzteres die ANSI C-Spezifikation verwendet.

Choroba
quelle
14

chorobaDie Antwort ist völlig richtig, hier die Details von man bash:

Wörter der Form $ 'string' werden speziell behandelt. Das Wort erweitert sich zu
Zeichenfolge, wobei Zeichen mit umgekehrten Schrägstrichen ersetzt werden, wie in ANSI C angegeben
Standard. Backslash-Escape-Sequenzen werden, falls vorhanden, wie folgt dekodiert:
              \ eine Warnung (Glocke)
              \ b Rücktaste
              \ e
              \ E ein Fluchtzeichen
              \ f Formularvorschub
              \ n neue Zeile
              Wagenrücklauf
              \ t horizontale Registerkarte
              \ v vertikale Registerkarte
              \\ Backslash
              Einfaches Anführungszeichen
              "doppeltes Anführungszeichen
              \? Fragezeichen
              \ nnn das Acht-Bit-Zeichen, dessen Wert der Oktalwert ist
                     nnn (ein bis drei Ziffern)
              \ xHH das Acht-Bit-Zeichen, dessen Wert hexadezimal ist
                     Wert HH (ein oder zwei hexadezimale Ziffern)
              \ uHHHH das Unicode-Zeichen (ISO / IEC 10646), dessen Wert das ist
                     Hexadezimalwert HHHH (ein bis vier Hexadezimalstellen)
              \ UHHHHHHHH
                     das Unicode-Zeichen (ISO / IEC 10646), dessen Wert das ist
                     Hexadezimalwert HHHHHHHH (ein bis acht Hexadezimalstellen)
              \ cx ein Steuerzeichen x

Deshalb!

mook765
quelle