gpt4 book ai didi

powershell - 为什么在 powershell 中链接的两个 sleep 语句会失败?

转载 作者:行者123 更新时间:2023-12-03 08:29:22 24 4
gpt4 key购买 nike

在Win命令行中,您可以执行cmd1 && cmd2,并且cmd2只有在cmd1成功时才会执行。根据此处的其他答案,我认为 powershell 的等效项是 (cmd1) -and (cmd2)。然而,我在测试它时看到了奇怪的行为 - 具体来说,当我应该变得真实时,我却失败了。这是一个最小的复制示例。

PS>(Start-Sleep 1)
PS>$?
True
PS>(Start-Sleep 1) -and (Start-Sleep 1)
False
PS>$?
True
PS>$z = (Start-Sleep 1) -and (Start-Sleep 1)
False
PS>$z
False
PS>$?
True

为什么 sleep 无法链接,为什么 $z 不匹配 $?

最佳答案

这些命令没有执行您认为它们正在执行的操作。您不是执行两个命令,而是要求解释器根据括号中命令的输出来评估两个语句。

在Powershell中,括号用于表示首先执行的语句。 Start-Sleep 在返回时将返回 $NULL,因为在执行期间或返回时没有向缓冲区写入任何内容。 Powershell 将 $NULL 评估为 false,因此当涉及 -and 检查时,-and 会作弊并看到输入为 $false,可能是为了节省时间。

(Start-Sleep -S 1) == $false

所以你实际上在做的是:

$null -and $null

当然是$false。因为当与 $false 进行 AND 运算时,$false$false

关于powershell - 为什么在 powershell 中链接的两个 sleep 语句会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56692907/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com