TEMA
about_Quoting_Rules
DESCRIPCIÓN BREVE
Describe las reglas referentes al uso de comillas simples y
dobles en Windows PowerShell.
DESCRIPCIÓN DETALLADA
Las comillas se utilizan para especificar una cadena literal.
Puede escribir una cadena entre comillas simples (') o entre
comillas dobles (").
Las comillas también se utilizan para crear una cadena multilínea
intercalada en el código. Una cadena multilínea intercalada en el
código es una cadena entre comillas simples o dobles que se
interpretan de manera literal. Este tipo de cadena puede abarcar
varias líneas. Todas estas líneas se interpretan como cadenas,
aunque no estén entre comillas.
En los comandos remotos, las comillas definen las partes del
comando que se ejecutan en el equipo remoto. En una sesión
remota, las comillas determinan también si las variables de un
comando se interpretan primero en el equipo local o en el equipo
remoto.
Cadenas entre comillas simples o dobles
Si escribe una cadena entre comillas dobles, los nombres de
variables precedidos de un signo de dólar ($) se reemplazan con
el valor de la variable antes de que se pase la cadena al
comando para su procesamiento.
Por ejemplo:
$i = 5
"El valor de $i es $i."
El resultado de este comando es el siguiente:
El valor de 5 es 5.
Asimismo, en una cadena entre comillas dobles, se evalúan las
expresiones y se inserta el resultado en la cadena. Por ejemplo:
"El valor de $(2+3) es 5."
El resultado de este comando es el siguiente:
El valor de 5 es 5.
Si escribe una cadena entre comillas simples, la cadena se
pasará al comando exactamente como la escribió. No se realiza
ninguna sustitución. Por ejemplo:
$i = 5
'El valor de $i es $i.'
El resultado de este comando es el siguiente:
El valor de $i es $i.
De manera similar, no se evalúan las expresiones en las cadenas
que se encuentran entre comillas simples. Se interpretan como
literales. Por ejemplo:
'El valor de $(2+3) es 5.'
El resultado de este comando es el siguiente:
El valor de $(2+3) es 5.
Para evitar que se reemplace un valor de variable en una cadena
entre comillas dobles, utilice el carácter de acento grave (`)
(ASCII 96), que es el carácter de escape de Windows PowerShell.
En el siguiente ejemplo, el carácter de acento grave que
precede a la primera variable $i evita que Windows PowerShell
reemplace el nombre de la variable por su valor. Por ejemplo:
$i = 5
"El valor de `$i es $i."
El resultado de este comando es el siguiente:
El valor de $i es 5.
Para que aparezcan comillas dobles en una cadena, escriba toda
la cadena entre comillas simples. Por ejemplo:
'Como dicen, "nunca te acostarás sin saber una cosa más".'
El resultado de este comando es el siguiente:
Como dicen, "nunca te acostarás sin saber una cosa más".
También puede escribir una cadena entre comillas simples en una
cadena entre comillas dobles. Por ejemplo:
"Como dicen, 'nunca te acostarás sin saber una cosa más'."
El resultado de este comando es el siguiente:
Como dicen, 'nunca te acostarás sin saber una cosa más'.
O bien, duplique las comillas alrededor de una frase que se
encuentra entre comillas dobles. Por ejemplo:
"Como dicen, ""nunca te acostarás sin saber una cosa más""."
El resultado de este comando es el siguiente:
Como dicen, "nunca te acostarás sin saber una cosa más".
Para incluir comillas simples en una cadena entre comillas simples,
utilice una segunda comilla simple consecutiva. Por ejemplo:
'un niño ''tranquilo'''
El resultado de este comando es el siguiente:
un niño 'tranquilo'
Para obligar a Windows PowerShell a interpretar literalmente
las comillas dobles, utilice un carácter de acento grave. De
este modo, Windows PowerShell no interpreta la comilla como un
delimitador de cadena. Por ejemplo:
"Usar una comilla (`") para comenzar una cadena."
Dado que el contenido de las cadenas entre comillas simples se
interpreta literalmente, no se puede usar el carácter de acento
grave para que se interpreten literalmente los caracteres en
una cadena entre comillas simples.
Por ejemplo, el comando siguiente genera un error porque
Windows PowerShell no reconoce el carácter de escape. En su
lugar, interpreta la segunda comilla como final de la cadena.
PS C:\> 'Usar una comilla (`') para comenzar una cadena.'
Símbolo (token) inesperado ')' en la expresión o la instrucción.
En línea:1 carácter:27
+ 'Usar una comilla (`') <<<< para comenzar una cadena.'
Cadenas multilínea intercaladas en el código que se encuentran entre
comillas simples o dobles
Las reglas referentes al uso de comillas para las cadenas multilínea
intercaladas en el código son ligeramente diferentes.
Una cadena multilínea intercalada en el código es una cadena
entre comillas simples o dobles que se interpretan de manera
literal. Este tipo de cadena puede abarcar varias líneas. Todas
estas líneas se interpretan como cadenas, aunque no estén entre
comillas.
Al igual que en las cadenas normales, las variables se
reemplazan con sus valores en las cadenas multilínea
intercaladas en el código que se encuentran entre comillas
dobles. En las cadenas multilínea intercaladas en el código que
se encuentran entre comillas simples, las variables no se
reemplazan con sus valores.
Puede utilizar este tipo de cadenas para cualquier texto, pero
resultan particularmente útiles para los siguientes tipos de texto:
- Texto que contiene comillas literales;
- varias líneas de texto, como el texto de un documento HTML o XML;
- y el texto de la Ayuda de un script o una función.
Una cadena multilínea intercalada en el código puede tener
cualquiera de los formatos siguientes, donde <Entrar>
representa el carácter oculto de avance de línea o línea nueva
que se agrega al presionar la tecla ENTRAR.
Formato 1:
@"<Entrar>
<cadena> [cadena] ...<Entrar>
"@
Formato 2:
@'<Entrar>
<cadena> [cadena] ...<Entrar>
'@
En ambos formatos, la comilla de cierre debe ser el primer
carácter de la línea.
Una cadena multilínea intercalada en el código contiene todo el
texto que se encuentra entre los dos caracteres ocultos.
En este tipo de cadena, todas las comillas se interpretan literalmente.
Por ejemplo:
@"
Para obtener ayuda, escriba "get-help"
"@
El resultado de este comando es el siguiente:
Para obtener ayuda, escriba "get-help"
Si utiliza una cadena multilínea intercalada en el código,
puede simplificar el uso de una cadena en un comando. Por ejemplo:
@"
Usar una comilla (') para comenzar una cadena.
"@
El resultado de este comando es el siguiente:
Usar una comilla (') para comenzar una cadena.
En las cadenas multilínea intercaladas en el código que se
encuentran entre comillas simples, las variables se interpretan
literalmente y se reproducen exactamente como se escriben. Por
ejemplo:
@'
La variable $profile contiene la ruta de acceso
de su perfil de Windows PowerShell.
'@
El resultado de este comando es el siguiente:
La variable $profile contiene la ruta de acceso
de su perfil de Windows PowerShell.
En las cadenas multilínea intercaladas en el código que se
encuentran entre comillas dobles, las variables se reemplazan
con sus valores. Por ejemplo:
@"
Incluso si no ha creado un perfil, la ruta de acceso del
archivo de perfil es:
$profile.
"@
El resultado de este comando es el siguiente:
Incluso si no ha creado un perfil,
la ruta de acceso del archivo de perfil es:
C:\Users\User01\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1.
Las cadenas multilínea intercaladas en el código se suelen
utilizar para asignar varias líneas a una variable. Por
ejemplo, la siguiente cadena multilínea intercalada en el
código asigna una página XML a la variable $page.
$page = [XML] @"
<command:command xmlns:maml="https://schemas.microsoft.com/maml/2004/10"
xmlns:command="https://schemas.microsoft.com/maml/dev/command/2004/10"
xmlns:dev="https://schemas.microsoft.com/maml/dev/2004/10">
<command:details>
<command:name>
Format-Table
</command:name>
<maml:description>
<maml:para>Aplica al resultado el formato de tabla.</maml:para>
</maml:description>
<command:verb>format</command:verb>
<command:noun>table</command:noun>
<dev:version></dev:version>
</command:details>
...
</command:command>
"@
Las cadenas multilínea intercaladas en el código también
resultan útiles para proporcionar datos al cmdlet
ConvertFrom-StringData, que convierte estas cadenas en tablas
hash. Para obtener más información, vea ConvertFrom-StringData.
VEA TAMBIÉN
about_Escape_Characters
ConvertFrom-StringData