2012-08-16 3 views
10

쉼표로 구분 된 값 목록을 단일 스위치의 일부로 스크립트에 전달하려고합니다.Powershell이 ​​프로그램 인수에서 쉼표를 제거하고 있습니다.

다음은 프로그램입니다. 여기

param(
    [string]$foo 
) 

Write-Host "[$foo]" 

은 "[하나, 둘, 셋]"대신이 반환 나는이 프로그램의 출력이 될 기대

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

사용의 예입니다 "[하나 둘 셋]" . 이것은 쉼표를 사용하여 값을 구분하기 때문에 문제입니다.

쉼표를 제거하는 이유는 무엇입니까? 그리고 쉼표를 유지하려면 무엇을 변경해야합니까?

답변

23

쉼표는 powershell에서 배열 구분 기호를 나타내는 특수 기호입니다.

그냥 따옴표로 인수를 넣어 : 또는

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

할 수 있습니다 '인용'쉼표 : 그것은 하나 개의 변수가 아닌 쉼표로 해석 있도록

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

감사합니다. 이것이 제가 찾고 있던 것입니다. – StaticMethod

3

은 따옴표로 묶 세 가지로 구분 :

PS> \ inputTest.ps1 -foo "하나, 둘, 셋"

,536.
3

다음 선택은

  1. 인용 모든 인수 (')

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

  2. 각 쉼표 전에 파워 쉘의 이스케이프 문자 (무덤 악센트 (`))

    주위에 사용할 수있는

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

큰 따옴표 주위의 인수는 아무 것도 변경하지 않습니다!
작은 따옴표 확장을 제거하십시오. 배치 파일에서 매개 변수를 전달하는 경우, 다음 "" 아래와 같이 "Param1을,과 Param2, 3 당겨, Param4를"당신의 PARAMS을 enclse

1


이스케이프 문자 (무덤 악센트) ","다음 문자의 확대 제거

관련 문제