PowerShellのブールリテラル


151

PowerShellのブールリテラルとは何ですか?


23
これは良い質問で、私から賛成票をもらいました。私は常にGoogle検索に表示されるSOの質問に賛成票を投じ、私を助けています。これらの4人の反対投票者は、このような簡単なエントリーレベルの質問に対する態度を本当に再考する必要があります。
ulidtko

回答:


172

$true そして $false

ただし、これらは定数です。ブール値には言語レベルのリテラルはありません。

それらが必要な場所に応じて、ブール値を必要とするメソッド呼び出しなど、タイプがブール値である必要がある場合は、ブール値に強制変換するものを使用することもできます。たとえば、ほとんどの非nullオブジェクトはtrueです。null、空の文字列、空の配列、および数値0はfalseです。


18

[bool]1そして[bool]0また働きます。


3
正確には、変換が行われているコンテキスト、たとえば条件ステートメントでブールに強制変換できる多くのものを使用できます。そして、それらのケースでは、あなたはまったくキャストする必要はありません。if ($s.Length) { ... }たとえば、完全に大丈夫です。
ジョーイ

5

既存の答えに多くの情報を追加するには、ブールリテラル:$true$falseのPowerShell(PS)スクリプトのコマンドラインパラメータとして使用した場合であるとしても仕事。次の名前のファイルに保存されているPSスクリプトの場合installmyapp.ps1

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.