2010-08-02 5 views
1

그래서 문제는 명령 줄에서 전달되는 내용을 미러링하는 기본 스크립트를 실행할 때 인수가 예상되는 방식으로 분리되지 않는다는 것입니다.Powershell의 명령 줄 인수

기본 코드는 다음과 같습니다

write-host "`$args`[0`] = $args[0]" 
write-host "`$args`[1`] = $args[1]" 
write-host "`$args`[2`] = $args[2]" 

내가

./script apples oranges bananas 

로 스크립트를 호출하면 나는 그것의 중요한 경우

$args[0] = apples oranges bananas[0] 
$args[1] = apples oranges bananas[1] 
$args[2] = apples oranges bananas[2] 

을 얻을, 나는 PowerShell에서이 작업을하고 있어요 2.0

답변

0

와우, 음, 당혹 스럽네.

위와 같이 $ args [0]을 예를 들어 큰 따옴표로 감싸는 경우 $ args와 stop을 해석하고 []에 도달하지 않으므로 $ args 또는 커맨드 라인 인수의 전체 배열.

3

는이 같은 $(..)에 변수를 포장해야합니다

write-host "`$args`[0`] = $($args[0])" 
write-host "`$args`[1`] = $($args[1])" 
write-host "`$args`[2`] = $($args[2])" 

이 간단한 스칼라 변수가 아닌 임의의 표현에 적용 : 여기

$date = get-date 
write-host "day: $($date.day)" 
write-host "so web page length: $($a = new-object Net.WebClient; $a.DownloadString('http://stackoverflow.com').Length)" 
write-host "$(if (1 -eq (2-1)) { 'is one' } else {'is not'})" 
1

은 내 프로필에서 사용하는 도우미 함수입니다 :

function Echo-Args 
{ 
    for($i=0;$i -lt $args.length;$i++) 
    { 
     "Arg $i is <$($args[$i])>" 
    } 
} 

PS > Echo-Args apples oranges bananas 
Arg 0 is <apples> 
Arg 1 is <oranges> 
Arg 2 is <bananas>