Frage Was ist das literale Escapezeichen in Powershell?


Wenn ich ein literales Anführungszeichen in eine in Anführungszeichen eingeschlossene Zeichenfolge in PowerShell einfüge, wie kann ich das Anführungszeichen umgehen, um anzuzeigen, dass es sich um ein Literal anstelle eines Zeichenfolgenbegrenzers handelt?


36
2017-07-29 22:34


Ursprung




Antworten:


Von help about_quoting_rules

Um doppelte Anführungszeichen in einer Zeichenfolge anzuzeigen,   umschließen Sie die gesamte Zeichenfolge in einfache Anführungszeichen. Zum Beispiel:

'As they say, "live and learn."'

Die Ausgabe von diesem Befehl ist:

As they say, "live and learn."

Sie können auch eine Zeichenfolge mit einem Anführungszeichen in eine Zeichenfolge mit doppelten Anführungszeichen einschließen.   Zum Beispiel:

"As they say, 'live and learn.'"

Die Ausgabe von diesem Befehl ist:

As they say, 'live and learn.'

Um Windows PowerShell zu zwingen, ein Anführungszeichen wörtlich zu interpretieren,   Verwende ein Backtick-Zeichen. Dies verhindert, dass Windows PowerShell interpretiert   das Anführungszeichen als Zeichenfolgebegrenzer Zum Beispiel:

"Use a quotation mark (`") to begin a string."

Die Ausgabe von diesem Befehl ist:

Use a quotation mark (") to begin a string.

Da der Inhalt von Strings mit einfachen Anführungszeichen wörtlich interpretiert wird,   Sie können das Backtick-Zeichen nicht verwenden, um ein Literalzeichen zu erzwingen   Interpretation in einer Zeichenfolge mit einem einzelnen Anführungszeichen.

Die Verwendung des Backtick-Zeichens, um andere Anführungszeichen in Strings in Anführungszeichen zu vermeiden, wird in neueren Versionen von PowerShell nicht unterstützt. In früheren Versionen von PowerShell konnte das Backtick - Escape - Zeichen verwendet werden, um ein doppeltes Anführungszeichen in einer einzelnen Zeichenfolge in Anführungszeichen zu entfernen, wie in der help about_quoting Dokument, das in diesen Versionen von PowerShell verfügbar ist.


54
2017-07-29 22:45



Ich mag diese Antwort, da sie neben der Beantwortung der Frage auch zusätzliche Informationen dazu enthält, wie Sie die Antwort in Powershell finden. Vielen Dank. - David Alpert
Nur eine Anmerkung, aber es scheint, als ob Sie nicht aus einfachen Anführungszeichen entkommen können. Ihr letztes Beispiel ist nicht gültig. Vielleicht hat sich seit deinem Post etwas geändert, da ich das nicht finden kann about_quoting hilf entweder. Laufende Powershell v5.1. Doppelte Anführungszeichen oder das Verschachteln verschiedener Anführungszeichen funktionieren immer noch wie erwartet. - Kal Zekdor
Interessant - es scheint, dass die Unterstützung für das Abrücken von einfachen Anführungszeichen ein Fehler war. Die Hilfedatei about_quoting wurde durch about_quoting_rules ersetzt, und es wird deutlich gesagt, dass Sie in PowerShell v5 keine einfachen Anführungszeichen verwenden können, um einfache Anführungszeichen zu umgehen, da einzelne Anführungszeichenfolgen Literale sind. Guter Fang, das war in V3 anders. - Helvick
Beachten Sie, dass einfache Anführungszeichen durch doppeltes Angeben in einfachen Anführungszeichen wie in SQL maskiert werden. Somit 'As they say, ''live and learn.''' Ausgänge As they say, 'live and learn.', das gleiche wie dein zweites Beispiel. - brianary


Das Escape-Zeichen in Powershell ist das "` "(umgekehrtes Apostroph / Grab).

Dies kann verwendet werden, um Anführungszeichen und auch Sonderzeichen zu umgehen (z. B. Tabulator ist "t").


9
2017-07-29 23:20



Das wird wahrscheinlich fahren bash Benutzer verrückt. (Das cmd.exe Escape-Charakter ist ^) - grawity
Nun, wenn Sie schielen, sieht es irgendwie wie ein Backslash aus. - koenigdmj


Um zu ergänzen, was bereits hier zur Verfügung gestellt wurde, sollten Sie auch wissen, dass Sie ein Zitat (einfach oder doppelt) mit dem Zitat selbst umgehen können. Das bedeutet, dass Sie dies tun können:

"Hier ist ein Beispiel für eine" doppelt zitierte Zeichenfolge "". "

und das:

"Diesmal ist es" single-quoted "."

Der Vorteil dieser Syntax ist einfach: Es ist einfacher, das gleiche Zitat zweimal zu tippen, als ein Zitat mit einem Backtick zu vermeiden.


8
2017-07-31 04:27





Single 'Text', so dass es als Literaltext behandelt wird, dann entkommen alle Sonderzeichen mit "\"

z.B. Diese Zeichenfolge: "Wie sie sagen," lebe und lerne "." Wird diese Zeichenfolge "Wie sie sagen," lebe und lerne. "


-1
2018-01-19 12:44



Nicht in PowerShell, tut es nicht. PS C: \ WINDOWS \ system32> Write-Host 'Wie sie sagen, "lebe und lerne". "Wie sie sagen," lebe und lerne. " - HopelessN00b