我正在学习使用PowerShell编写脚本,并且发现了这段代码将对我的项目有帮助。该示例来自Is there a one-liner for using default values with Read-Host?

$defaultValue = 'default'

$prompt = Read-Host "Press enter to accept the default [$($defaultValue)]"

$prompt = ($defaultValue,$prompt)[[bool]$prompt]

我想我知道$prompt = ($defaultValue,$prompt)正在创建一个由两个元素组成的数组,并且[bool]部分正在将$prompt数据类型强制为 bool(boolean) 值,但是我不理解第三行代码的整体功能。

最佳答案

根据变量是否为空($prompt或空字符串都变为[bool])(非空字符串变为$true),将$false转换为$null会生成$false$true的值。

[bool]''→$ false
[bool]“某物”→$ true

然后在索引运算符中使用该 bool(boolean) 值,然后将该值隐式转换为一个整数,其中$false变为0而$true变为1,从而选择数组的第一个或第二个元素。

[int] $ false→0
[int] $ true→1

($ defaultValue,$ prompt)[0]→$ defaultValue
($ defaultValue,$ prompt)[1]→$ prompt

关于powershell - $ prompt =($ defaultValue,$ prompt)[[bool] $ prompt]-在PowerShell中模拟三元条件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40892156/

10-11 07:59