Al incluir un carácter de comillas literales dentro de una cadena entre comillas en Powershell, ¿cómo puedo escapar del carácter de comillas para indicar que es un literal en lugar de un delimitador de cadena?
Al incluir un carácter de comillas literales dentro de una cadena entre comillas en Powershell, ¿cómo puedo escapar del carácter de comillas para indicar que es un literal en lugar de un delimitador de cadena?
Respuestas:
De help about_quoting_rules
Para que aparezcan comillas dobles en una cadena, encierre la cadena completa entre comillas simples. Por ejemplo:
'As they say, "live and learn."'
El resultado de este comando es:
As they say, "live and learn."
También puede encerrar una cadena entre comillas simples en una cadena entre comillas dobles. Por ejemplo:
"As they say, 'live and learn.'"
El resultado de este comando es:
As they say, 'live and learn.'
Para obligar a Windows PowerShell a interpretar una comilla doble literalmente, use un carácter de retroceso. Esto evita que Windows PowerShell interprete las comillas como un delimitador de cadena. Por ejemplo:
"Use a quotation mark (`") to begin a string."
El resultado de este comando es:
Use a quotation mark (") to begin a string.
Debido a que el contenido de las cadenas entre comillas simples se interpreta literalmente, no puede usar el carácter de retroceso para forzar una interpretación de caracteres literales en una cadena entre comillas simples.
El uso del carácter de retroceso para escapar de otras comillas en cadenas entre comillas simples no se admite en versiones recientes de PowerShell. En versiones anteriores de PowerShell, el carácter de escape de retroceso podría usarse para escapar de un carácter de comillas dobles dentro de una sola cadena entre comillas, como se detalla en el help about_quoting
documento que está disponible en esas versiones de PowerShell.
'As they say, ''live and learn.'''
salidas As they say, 'live and learn.'
, lo mismo que su segundo ejemplo.
El carácter de escape en Powershell es el "` "(apóstrofo / tumba hacia atrás).
Esto se puede usar para escapar de comillas y también caracteres especiales (por ejemplo, tab es `t).
bash
usuarios. (El cmd.exe
personaje de escape es ^
)
Para complementar lo que ya se ha proporcionado aquí, también debe saber que puede escapar de una cotización (simple o doble) con la cotización misma. Eso significa que puedes hacer esto:
"Aquí hay un ejemplo de una" "cadena entre comillas dobles" "."
y esto:
'Esta vez es' 'comillas simples' ''.
La ventaja que proporciona esta sintaxis es simple: es más fácil escribir la misma cita dos veces que escapar de una cita con una tecla de retroceso.
solo 'texto' para que se trate como texto literal, luego escape cualquier carácter especial usando "\"
por ejemplo, esta cadena: "Como dicen," vive y aprende "." Se convierte en esta cadena 'Como dicen, \ "vive y aprende".
PowerShell.exe -Command
e intentando pasar comillas dobles en el parámetro (ya que, técnicamente, es CMD el que se escapa, pero es válido en el parámetro de comando). imgur.com/1btjoQW
about_quoting
ayuda. Ejecutando powershell v5.1. Escapar de comillas dobles o anidar diferentes tipos de comillas sigue funcionando como se esperaba.