2012-08-16 29 views
10

numaralı program değişkeninden virgül kaldırıyor Tek bir anahtarın parçası olarak komut dosyasına virgülle ayrılmış bir değerler listesinde geçmek istiyorum.Powershell,

İşte program. İşte

param(
    [string]$foo 
) 

Write-Host "[$foo]" 

"[bir, iki, üç]" ama bunun yerine dönüyor ben bu programın çıktısı olmasını beklediğiniz

PS> .\inputTest.ps1 -foo one,two,three 

kullanım örneği "[bir iki üç]" . Bu bir problem çünkü değerleri ortadan kaldırmak için virgülleri kullanmak istiyorum.

Neden powershell virgülleri kaldırabilir ve bunları korumak için neyi değiştirmem gerekiyor?

cevap

23

Virgül, bir dizi ayırıcıyı belirtmek için powershell'deki özel bir simgedir.

Sadece tırnak içinde argümanları koyun: Alternatif

inputTest.ps1 -foo "one, two, three" 

yapabilirsiniz 'alıntı' virgül: o bir değişken değil, bir virgülle- olarak yorumlar, böylece

inputTest.ps1 -foo one`,two`,three 
+0

Teşekkür ederiz. Aradığım şey bu. – StaticMethod

3

tırnak içinde içine alın üç ayrılmış liste:

PS> \ inputTest.ps1 -foo "bir, iki, üç"

.
3

takiben seçimler

  1. alıntılar bütün argümanları (')

    inputTest.ps1 -foo 'one,two,three'

  2. her virgülden önce PowerShell kaçış karakteri (mezar aksan (`))

    çevresinde mevcuttur

    inputTest.ps1 -foo one`,two`,three

Bağımsız değişkenler etrafındaki çift tırnak hiçbir şeyi değiştirmez!
Tek tırnak işaretleri genişlemeyi ortadan kaldırır. Eğer bir toplu iş dosyasından parametreleri geçiyoruz, o zaman "" aşağıda "Param1 Param2, param3, Param4" senin params enclse

1


Kaçış karakteri (mezar aksan) "" sonraki karakterin genişleyen ortadan kaldırır