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-?

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.


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!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.