Boolean literals di PowerShell

151

Apa literal boolean di PowerShell?

Kolonel Panic
sumber
23
Ini adalah pertanyaan yang bagus dan mendapat dukungan dari saya. Saya selalu menjawab pertanyaan SO yang muncul di pencarian google saya dan membantu saya. Keempat orang downvoters itu harus benar-benar memikirkan kembali sikap mereka terhadap pertanyaan-pertanyaan tingkat awal yang mudah seperti ini.
ulidtko

Jawaban:

172

$truedan $false.

Itu adalah konstanta. Tidak ada literal tingkat bahasa untuk boolean.

Bergantung pada di mana Anda membutuhkannya, Anda juga dapat menggunakan apa pun yang memaksa ke nilai boolean, jika jenisnya harus boolean, misalnya dalam pemanggilan metode yang membutuhkan boolean (dan tidak memiliki overload yang saling bertentangan), atau pernyataan bersyarat. Sebagian besar objek non-null benar, misalnya. null, string kosong, array kosong dan jumlahnya 0salah.

Joey
sumber
18

[bool]1dan [bool]0juga berfungsi.

Kolonel Panic
sumber
3
Lebih tepatnya, Anda dapat menggunakan banyak hal yang dapat dipaksa untuk boolean dalam konteks di mana konversi berlangsung, misalnya dalam pernyataan bersyarat. Dan dalam kasus-kasus itu Anda tidak perlu berperan sama sekali. if ($s.Length) { ... }baik-baik saja, misalnya.
Joey
5

Untuk menambahkan informasi lebih lanjut ke jawaban yang sudah ada : Huruf boolean $truedan $falsejuga berfungsi seperti saat digunakan sebagai parameter baris perintah untuk skrip PowerShell (PS). Untuk skrip PS di bawah ini yang disimpan dalam file bernama installmyapp.ps1:

param (
    [bool]$cleanuprequired
)

echo "Batch file starting execution."

Sekarang jika saya harus memohon file PS ini dari baris perintah PS, ini adalah bagaimana saya dapat melakukannya:

installmyapp.ps1 -cleanuprequired $true

ATAU

installmyapp.ps1 -cleanuprequired 1

Di sini 1dan $truesetara. Juga, 0dan $falsesetara.

Catatan : Jangan pernah berharap string literal truedapat secara otomatis dikonversi ke boolean. Misalnya, jika saya menjalankan perintah di bawah ini:

installmyapp.ps1 -cleanuprequired true

gagal menjalankan skrip dengan kesalahan di bawah ini:

Tidak dapat memproses transformasi argumen pada parameter 'cleanuprequired'. Tidak dapat mengonversi nilai "System.String" untuk mengetik "System.Boolean". Parameter Boolean hanya menerima nilai dan angka Boolean, seperti $ True, $ False, 1 atau 0.

RBT
sumber