2012-05-17 6 views
20

Powershell에서 $?의 의미는 무엇입니까?


편집 : TechNet answers 동어 반복에, '실패' '성공'또는 무엇을 설명하지 않고 의미한다.

$?
마지막 작업의 실행 상태가 들어 있습니다. 마지막 작업이 성공하면 TRUE를, 실패하면 FALSE를 포함합니다.

나는 $로 추정 했습니까? $ LastExitCode가 0인지 여부 만 테스트 하겠지만 counter example은 $? False이지만 $ LastExitCode는 True입니다.

답변

23

마지막 명령이 성공한 경우 true을 반환하고 그렇지 않은 경우 false을 반환합니다.

그러나 여러 가지주의 사항과 명확하지 않은 동작 (예 : '성공'이 정확히 무엇을 의미하는지)이 있습니다. 보다 완벽한 치료를 위해 this article을 읽는 것이 좋습니다.

예를 들어 Get-ChildItem을 호출 해보십시오.

PS> Get-ChildItem 

PS> $? 
    True 

$? Get-ChildItem에 대한 호출이 성공하면 True을 반환합니다.

그러나 존재하지 않는 디렉터리에서 Get-ChildItem을 호출하면 오류가 반환됩니다.

PS> Get-ChildItem \Some\Directory\Which\Does\Not\Exist 
    Get-ChildItem : Cannot find path 'C:\Some\Directory\Which\Does\Not\Exist' because it does not exist. 

PS> $? 
    False 

$? 이전 명령이 성공하지 못했기 때문에 여기서 False을 반환합니다.

+0

명령이란 무엇입니까? –

+0

@MattHickford 명령은 Powershell을 사용하여 실행하는 명령입니다. 예를 들어 cmdlet 또는 실행 파일 일 수 있습니다. 추가 한 예제를 참조하십시오. –

+0

'성공'은 무엇을 의미합니까? '$ LastExitCode가 0 인 경우에만'을 의미한다고 생각합니까? –

3

$?에는 마지막 명령이 오류가 발생한 경우 $false이 포함됩니다. 그렇지 않은 경우 $true이 포함됩니다. PowerShell v1 일 동안 이것은 오류 처리를 수행하는 일반적인 방법이었습니다. 예를 들어 스크립트에서 파일의 존재 여부를 확인한 다음 사용자 지정 메시지를 인쇄하려는 경우 다음을 수행 할 수 있습니다.

+2

사람들은 지금 무엇을 대신합니까? – mikemaccana

+1

@mikemaccana, 여기 같은 배에 .... 나는 try/catch 문을 생각할 것입니다. – Johnrad

관련 문제