it-swarm.com.de

Verketten einer Variablen und eines Zeichenfolgenlitals ohne Leerzeichen in PowerShell

Wie schreibe ich eine Variable ohne Leerzeichen auf die Konsole? Es gibt Probleme beim Versuch:

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

Ich möchte folgende Ausgabe:

Some textNOSPACES
43
M. Dudley

Eine andere Möglichkeit und möglicherweise der kanonischere Weg ist die Verwendung geschwungener Klammern, um den Namen abzugrenzen:

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

Dies ist besonders praktisch für Pfade, z. ${ProjectDir}Bin\$Config\Images. Wenn jedoch hinter dem Variablennamen ein \ steht, genügt PowerShell, um den nicht - Teil des Variablennamens zu berücksichtigen.

56
Keith Hill

Sie müssen die Variable in $ () umschließen.

Zum Beispiel Write-Host "$($MyVariable)NOSPACES"

20
ravikanth
Write-Host $MyVariable"NOSPACES"

Funktioniert, obwohl es sehr seltsam aussieht ... Ich würde wählen:

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

Aber das ist nur ich ...

9
Massif

Sie können auch einen hinteren Haken ` wie folgt verwenden:

Write-Host "$MyVariable`NOSPACES"
3
mayursharma

Einfachste Lösung: Write-Host $ MyVariable "NOSPACES"

1
Gavin Burke

$ Variable1 = 'www.google.co.in /'

$ Variable2 = 'Bilder'

Schreib-Ausgabe ($ Variable1 + $ Variable2)

0
Dheeraj2006

wenn Geschwindigkeit zählt ...

$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
0
Peter