Literais booleanos no PowerShell

151

Quais são os literais booleanos no PowerShell?

Coronel Panic
fonte
23
Esta é uma boa pergunta e foi aprovada por mim. Eu sempre voto positivo SO perguntas que aparecem nas minhas pesquisas no google e me ajudam. Esses 4 defensores do voto deveriam realmente repensar sua atitude em relação a perguntas fáceis e básicas como esta.
21712 ulidtko

Respostas:

172

$true e $false .

Essas são constantes, no entanto. Não há literais no nível do idioma para booleanos.

Dependendo de onde você precisar deles, você também pode usar qualquer coisa que coagir a um valor booleano, se o tipo precisar ser booleano, por exemplo, em chamadas de método que exijam booleano (e sem sobrecarga conflitante) ou declarações condicionais. A maioria dos objetos não nulos é verdadeira, por exemplo. null, cadeias vazias, matrizes vazias e o número 0são falsos.

Joey
fonte
18

[bool]1e [bool]0também funciona.

Coronel Panic
fonte
3
Para ser preciso, você pode usar muitas coisas que podem ser coagidas a booleanas em contextos em que a conversão está ocorrendo, por exemplo, em uma declaração condicional. E nesses casos, você não precisa transmitir absolutamente. if ($s.Length) { ... }está perfeitamente bem, por exemplo.
Joey
5

Para adicionar mais informações às respostas já existentes : Os literais booleanos $truee $falsetambém funcionam como quando são usados ​​como parâmetros de linha de comando para scripts do PowerShell (PS). Para o script PS abaixo, que é armazenado em um arquivo chamado installmyapp.ps1:

param (
    [bool]$cleanuprequired
)

echo "Batch file starting execution."

Agora, se eu tiver que invocar esse arquivo PS a partir de uma linha de comando PS, é assim que posso fazê-lo:

installmyapp.ps1 -cleanuprequired $true

OU

installmyapp.ps1 -cleanuprequired 1

Aqui 1e $truesão equivalentes. Além disso, 0e $false são equivalentes.

Nota : Nunca espere que o literal da string truepossa ser convertido automaticamente em booleano. Por exemplo, se eu executar o comando abaixo:

installmyapp.ps1 -cleanuprequired true

falha ao executar o script com o erro abaixo:

Não é possível processar a transformação do argumento no parâmetro 'cleanuprequired'. Não é possível converter o valor "System.String" para o tipo "System.Boolean". Os parâmetros booleanos aceitam apenas valores e números booleanos, como $ True, $ False, 1 ou 0.

RBT
fonte