Что такое булевы литералы в PowerShell?
Булевы литералы в PowerShell
Ответ 1
$true
и $false
.
Это константы. Для булевых языков нет литералов уровня.
В зависимости от того, где они вам нужны, вы также можете использовать все, что прибегает к логическому значению, если тип должен быть логическим, например. в вызовах методов, которые требуют булевых (и не имеют противоречивой перегрузки) или условных операторов. Например, большинство ненулевых объектов являются истинными. null
, пустые строки, пустые массивы и число 0
являются ложными.
Ответ 2
[bool]1
и [bool]0
также работает.
Ответ 3
Просто чтобы добавить больше информации: логические литералы $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.