Заметки о Windows и других программных продуктах Microsoft...

Проверяем значение переменной в PowerShell

Проверяем значение переменной в PowerShell

Иногда бывает необходимо проверить, имеет ли переменная какое либо значение. Казалось бы, самый простой способ — это сравнить ее с встроенной переменной $null, примерно так:

if ($var -eq $null) {Write-Host ″My variable is NULL″}

Однако этот способ лучше не использовать. Он не очень надежен и периодически выдает совсем не то, что ожидаeшь. Для того, чтобы проверить, имеет ли переменная значение $null, лучше применять такой вариант:

if (!$var) {Write-Host ″My variable is NULL″}

переменная пуста

 

А проверить, имеет ли переменная какое либо значение, отличное от $null, можно так:

if ($var) {Write-Host ″My variable is NOT NULL″}

переменная имеет значение

 
 
Комментарии
Дмитрий

Ну, извините, конечно. Но неужели прежде чем это писать и использовать не хотелось/не нужно было проверить? В вашем варианте любые пустые значения, как 0, », false, пустой ArrayList, возможно некоторые другие коллекции, будут определяться как null… пустой hashtable определеяется не как null. И на последок, в сообщениях где нет нужды в заменах переменных используйте одинарные кавычки.

Я данную конструкцию давно и успешно использую в скриптах. Есть конкретный пример того, когда она работает некорректно?
По поводу кавычек — в данном случае без разницы, как говорится «дело вкуса».