2011-02-28 73 views
37

¿Cómo puedo escribir una variable en la consola sin espacio después de ella? Hay problemas cuando intento:Concatenar una variable y una cadena literal sin espacio en PowerShell

$MyVariable = "Some text" 
Write-Host "$MyVariableNOSPACES" 

Me gustaría que el siguiente resultado:

Some textNOSPACES 
+0

Sí, para toda la ONU/boxeo atajos de Powershell * tos * "permite", se podría pensar que, a menos que tenga una variable llamada '$ MyVariableN '(u otra colisión) que PS averigüe lo que quieres decir. No dados. – ruffin

Respuesta

46

Otra opción y, posiblemente, la forma más canónica es el uso de llaves para delimitar el nombre:

$MyVariable = "Some text" 
Write-Host "${MyVariable}NOSPACES" 

Esto es especialmente útil para las rutas de ejemplo ${ProjectDir}Bin\$Config\Images. Sin embargo, si hay un \ después del nombre de la variable, eso es suficiente para que PowerShell considere que no es parte del nombre de la variable.

18

Es necesario para envolver la variable en $()

Por ejemplo, Write-Host "$($MyVariable)NOSPACES"

+0

En mi prueba esto pone un espacio entre la variable y la cadena literal. –

+2

Esto es lo que veo: '$ MyVariable =" Algún texto "' Write-Host "$ ($ MyVariable) NOSPACES" 'Algunos textosNOSPACES – ravikanth

7
Write-Host $MyVariable"NOSPACES" 

Funcionará, aunque parece muy extraño ... Yo iría por:

Write-Host ("{0}NOSPACES" -f $MyVariable) 

Pero eso es sólo conmigo ...

+0

La primera solución funcionó para mí. –

+2

Siempre prefiero la segunda opción. Yo también pensé que era solo yo :-) –

1

solución más fácil: Write-Host "$ myVariable NOSPACES"

+0

Funciona, pero PowerShell no le permitirá insertar múltiples espacios entre la variable y el literal de la cadena. –

+0

¿Por qué no debería simplemente mover los espacios * a * la cadena literal? 'Write-Host $ MyVariable" NOSPACES "'? – ruffin

Cuestiones relacionadas