Powershellでは、if($variable)
のテストは何ですか?このテストは、変数が設定されているか、nullであるか、真であるか、または何か他のものですか?
答えて
変数が真であるかどうか、またはブール変数でない変数を真に合体できるかどうかをテストします。例えば、これらの各々は偽を返す:
$var #uninitialized
$var = ""
$var = $false
$var = 0
は、これらの各々は真を返す:
$var = "something"
$var = $true
$var = 1 #or any non-zero number
ありがとう、私はこの構文でいくつかのコードを継承し、それは意味に慣れていたようだ異なるもの。私はこれができる時に答えたものとしてマークします。 – Bob
"*変数に何かが含まれているかどうかをテストします。 PowerShellでは、空の配列は$ falseですが、空のハッシュテーブルは$ trueです。 (空の辞書が偽であるPythonとは異なります)。 – TessellatingHeckler
これは良い答えですが、具体的には、何かが '$ true'か、' $ true'に合体できるかどうかをテストします。つまり、 '[bool] $ var'の値が何であれ条件を使用するように' [bool] 'への暗黙のキャストがあります。この答えが指摘し、TessellatingHecklerが拡張されたときに、どの値が '$ true'または' $ false'に評価されるかの詳細は異なります。 – briantist
PowerShellはルーズタイピングを使用し、これの一部として任意の値を条件式として使用することができます。値を真または偽に評価する論理(そのような値はしばしば「真理」および「偽」と呼ばれる)は、System.Management.Automation.LanguagePrimitives.IsTrue関数内にあります。論理は次のとおりです。
$null
はfalseと評価されます。$true
および$false
は、それらの通常の意味を有する。- 数値(int、double、decimalなど)は、ゼロでない場合はtrueです。
- 文字列が空でない場合は真実です。
- スイッチパラメータがtrueの場合、発信者によって提供されていると評価されます。
function Test
{
param ([switch]$Option)
}
Test # $Option evaluates to false
Test -Option # $Option evaluates to true
# (Technically, $Option is not bool; it is of type SwitchParameter which,
# for almost all intents and purposes, can be used interchangeably with bool.)
- (
IList
を実装する)コレクションは、次のロジックを使用して:空のコレクションはfalseyあります。 1つの要素のみを持つコレクションはそのメンバの真理値を評価します。 2つ以上の要素を持つコレクションは真実です。 - それ以外は真実です。
落とし穴がいくつかあります:
- char型が数値型ではありません。実際、
[System.Management.Automation.LanguagePrimitives]::IsTrue([char]0)
はTrueを返します(最後の節につき)。さらにif([char]0) { "Truthy" } else { "Falsey" }
は "Falsey"を返します。私はこれが起こる理由を見つけることができませんでした。 - 上記のように、正確に1つの要素を持つコレクションは、そのメンバを評価することによって評価されます。だから、自分自身だけを含むコレクションを評価しようとすると(あるいは、それぞれが1つの要素を持つコレクションの再帰的または非常に深くネストされたチェーン)を評価しようとするとどうなりますか?科学のために、あなたはそれをテストすることができます。
$array = New-Object -TypeName System.Object[] 1 # $array = new object[1]
$array[0] = $array
if($array) { "Truthy" } else { "Falsey" }
を(答えは:それでStackOverflowExceptionでプロセスをクラッシュ)
- 1. Powershell Standard Verbose to variable
- 2. テストをレールで実行すると、このエラーはどうなりますか?
- 3. Powershell 1行に配列があるかどうかをテストします
- 4. PesterでPowerShellスクリプトをテストするときに、どのようにOut-Fileを偽装できますか?
- 5. Powershell - 私のコマンドの結果をどのようにテストできますか?
- 6. どのようなテストを使用する必要がありますか?
- 7. 無効なUIButtonをクリックするとどうなりますか
- 8. [[$ {variable}]]はbashの[[-n $ {variable}]と同じですか?
- 9. if if、what if some variable: '(条件なし)はどういう意味ですか?
- 10. 「SpringをJUnitテストとして実行する」ときに内部的にはどうなりますか?
- 11. PowerShellと奇妙なことがありますか?
- 12. 予測モデルが正しいかどうかをよりうまくテストする方法はありますか?
- 13. PowerShellのErrorRecord.CategoryInfo.Categoryをテストします。
- 14. eclipseでプロジェクトをクリーンアップするとどうなりますか?
- 15. WinFormsイベントでマウスボタンをクリックするとどうなりますか?
- 16. redis vmファイルを削除するとどうなりますか?
- 17. Cloudflare DNS - Cloudflareを停止するとどうなりますか?
- 18. sqliteでヘッダーをオン/オフするとどうなりますか?
- 19. このボタンをクリックするとどうなりますか?
- 20. Delphiパッケージをリンクするとどうなりますか?
- 21. ノンクラスタード・インデックスを削除するとどうなりますか?
- 22. .NET Webアプリケーションを展開するとどうなりますか?
- 23. オブジェクト/変数をスローするとどうなりますか?
- 24. スレッドが例外をスローするとどうなりますか?
- 25. parse4cn1がparse.comをシャットダウンするとどうなりますか?
- 26. Gemfile.lockを直接変更するとどうなりますか?
- 27. オブジェクトを新規作成するとどうなりますか?
- 28. サービングを実行するとどうなりますか?
- 29. 数字をエスケープするとどうなりますか?
- 30. アラームを2回起動するとどうなりますか?
これは、変数の型に依存します。これはPythonやJavaScriptでもよくあることですが、一般に、この文脈で$ trueになるものは「真実」として知られており、この文脈では$ falseになるものは「偽」として知られています。異なる言語でPowerShell - https://blogs.msdn.microsoft.com/powershell/2006/12/24/boolean-values-and-operators/ – TessellatingHeckler