Letterali booleani in PowerShell


151

Quali sono i letterali booleani in PowerShell?


23
Questa è una buona domanda e ha ottenuto un mio voto. Vivo sempre domande SO che compaiono nelle mie ricerche su Google e mi aiutano. Quei 4 downvoter dovrebbero davvero ripensare il loro atteggiamento verso domande facili e di livello base come questa.
Ulidtko,

Risposte:


172

$true e $false .

Quelle sono costanti, comunque. Non ci sono letterali a livello linguistico per i booleani.

A seconda di dove ne hai bisogno, puoi anche usare tutto ciò che costringe a un valore booleano, se il tipo deve essere booleano, ad esempio nelle chiamate di metodo che richiedono booleano (e non hanno sovraccarico in conflitto) o istruzioni condizionali. La maggior parte degli oggetti non nulli sono veri, ad esempio. null, stringhe vuote, array vuoti e il numero 0sono falsi.


18

[bool]1e [bool]0funziona anche.


3
Per essere precisi, puoi usare molte cose che possono essere costrette a diventare booleane in contesti in cui avviene la conversione, ad esempio in una dichiarazione condizionale. E in quei casi non devi assolutamente lanciare. if ($s.Length) { ... }va benissimo, per esempio.
Joey,

5

Per aggiungere ulteriori informazioni alle risposte già esistenti : I letterali booleani $truee $falseanche il lavoro come è quando viene utilizzato come parametri della riga di comando per PowerShell (PS) script. Per lo script PS di seguito che è memorizzato in un file denominato installmyapp.ps1:

param (
    [bool]$cleanuprequired
)

echo "Batch file starting execution."

Ora, se devo invocare questo file PS da una riga di comando PS, ecco come posso farlo:

installmyapp.ps1 -cleanuprequired $true

O

installmyapp.ps1 -cleanuprequired 1

Qui 1e $truesono equivalenti. Inoltre, 0e $falsesono equivalenti.

Nota : non aspettatevi mai che il valore letterale di stringa truepossa essere convertito automaticamente in booleano. Ad esempio, se eseguo il comando seguente:

installmyapp.ps1 -cleanuprequired true

non riesce a eseguire lo script con l'errore seguente:

Impossibile elaborare la trasformazione dell'argomento sul parametro 'cleanuprequired'. Impossibile convertire il valore "System.String" per digitare "System.Boolean". I parametri booleani accettano solo valori e numeri booleani, come $ True, $ False, 1 o 0.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.