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