web-dev-qa-db-ja.com

PowerShellで変数と文字列リテラルをスペースなしで連結する

スペースを入れずにコンソールに変数を書き込むにはどうすればよいですか?私がしようとすると問題があります:

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

次の出力が欲しい:

Some textNOSPACES
44
M. Dudley

別のオプションと、おそらくより標準的な方法は、中括弧を使用して名前を記述することです。

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

これは、パスなどに特に便利です。 ${ProjectDir}Bin\$Config\Images。ただし、変数名の後に\がある場合、PowerShellでnotが変数名の一部であると見なすのに十分です。

61
Keith Hill

変数を$()でラップする必要があります

たとえば、Write-Host "$($MyVariable)NOSPACES"

21
ravikanth
Write-Host $MyVariable"NOSPACES"

動作しますが、非常に奇妙に見えますが...

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

しかし、それは私だけです...

11
Massif

次のように、バックティック`を使用することもできます。

Write-Host "$MyVariable`NOSPACES"
4
mayursharma

最も簡単なソリューション:Write-Host $ MyVariable "NOSPACES"

1
Gavin Burke

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

$ Variable2 = 'Images'

書き込み出力($ Variable1 + $ Variable2)

0
Dheeraj2006

速度が重要な場合...

$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