Reputation: 30554
How can I write a variable to the console without a space after it? There are problems when I try:
$MyVariable = "Some text"
Write-Host "$MyVariableNOSPACES"
I'd like the following output:
Some textNOSPACES
Upvotes: 64
Views: 100583
Reputation: 107
$Variable1 ='www.google.co.in/'
$Variable2 ='Images'
Write-Output ($Variable1+$Variable2)
Upvotes: 3
Reputation: 202072
One possibly canonical way is to use curly braces to delineate the name:
$MyVariable = "Some text"
Write-Host "${MyVariable}NOSPACES"
This is particular handy for paths e.g. ${ProjectDir}Bin\$Config\Images
. However, if there is a \
after the variable name, that is enough for PowerShell to consider that not part of the variable name.
Upvotes: 89
Reputation: 2211
if speed matters...
$MyVariable = "Some text"
# slow:
(measure-command {foreach ($i in 1..1MB) {
$x = "$($MyVariable)NOSPACE"
}}).TotalMilliseconds
# faster:
(measure-command {foreach ($i in 1..1MB) {
$x = "$MyVariable`NOSPACE"
}}).TotalMilliseconds
# even faster:
(measure-command {foreach ($i in 1..1MB) {
$x = [string]::Concat($MyVariable, "NOSPACE")
}}).TotalMilliseconds
# fastest:
(measure-command {foreach ($i in 1..1MB) {
$x = $MyVariable + "NOSPACE"
}}).TotalMilliseconds
Upvotes: 0
Reputation: 158
You can also use a back tick `
as below:
Write-Host "$MyVariable`NOSPACES"
Upvotes: 4
Reputation: 4433
Write-Host $MyVariable"NOSPACES"
Will work, although it looks very odd... I'd go for:
Write-Host ("{0}NOSPACES" -f $MyVariable)
But that's just me...
Upvotes: 14
Reputation: 25840
You need to wrap the variable in $()
For example, Write-Host "$($MyVariable)NOSPACES"
Upvotes: 29