PowerShell의 부울 리터럴


151

PowerShell의 부울 리터럴은 무엇입니까?


23
이것은 좋은 질문이며 저에게서 공감대를 얻었습니다. Google 검색에 표시되는 SO 질문을 항상 찬성하여 도와줍니다. 이 4 명의 다운 보더는 이처럼 쉬운 엔트리 레벨 질문에 대한 태도를 다시 생각해야합니다.
ulidtko

답변:


172

$true그리고 $false.

그러나 그것들은 상수입니다. 부울에 대한 언어 수준 리터럴이 없습니다.

필요한 위치에 따라 유형이 부울이어야하는 경우 (예 : 부울이 필요하고 (과 충돌하는 과부하가없는) 메소드 호출 또는 조건문) 부울 값으로 강제 되는 것을 사용할 수도 있습니다 . 예를 들어, null이 아닌 대부분의 개체가 참입니다. null, 빈 문자열, 빈 배열 및 숫자 0는 false입니다.


18

[bool]1[bool]0도 작동합니다.


3
정확히 말하자면, 조건문과 같이 변환이 이루어지는 상황에서 부울로 강제 할 수있는 많은 것을 사용할 수 있습니다. 이러한 경우에는 전혀 캐스팅 할 필요가 없습니다. if ($s.Length) { ... }예를 들어 완벽합니다.
Joey

5

기존 답변에 더 많은 정보를 추가하려면 부울 리터럴 $true$falsePowerShell (PS) 스크립트의 명령 줄 매개 변수로 사용될 때 와 같이 작동합니다. 이름이 installmyapp.ps1다음 과 같은 파일에 저장된 아래 PS 스크립트의 경우 :

param (
    [bool]$cleanuprequired
)

echo "Batch file starting execution."

이제 PS 명령 행에서이 PS 파일을 호출해야한다면 다음과 같습니다.

installmyapp.ps1 -cleanuprequired $true

또는

installmyapp.ps1 -cleanuprequired 1

여기 1$true동일합니다. 또한, 0$false동등하다.

참고 : 문자열 리터럴 true이 자동으로 부울로 변환 될 수 있다고 기대하지 마십시오 . 예를 들어 아래 명령을 실행하면

installmyapp.ps1 -cleanuprequired true

아래 오류로 스크립트를 실행하지 못합니다.

'cleanuprequired'매개 변수에서 인수 변환을 처리 할 수 ​​없습니다. "System.String"값을 "System.Boolean"유형으로 변환 할 수 없습니다. 부울 매개 변수는 $ True, $ False, 1 또는 0과 같은 부울 값과 숫자 만 허용합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.