为什么将外部应用程序通过管道传输到 Select-Object -First 1 会将 $LastExitCode 设置为 -1?
Why does piping an external application to Select-Object -First 1 set $LastExitCode to -1?
我正在尝试确定 git
的可执行文件的路径。由于可能通过 PATH
目录找到多个可执行文件,因此我想将结果限制在一个路径中。
使用以下构造时,PowerShell 将 $LastExitCode
设置为 -1
,尽管找到了可执行文件。
$git_path = "$(where.exe git | select-object -first 1)"
我想知道为什么要设置此退出代码?
Select -First <int>
通过收集必要的输入量(在您的情况下只有 1 个字符串)来工作 - 之后它 强制运行时 interrupt/stop 所有上游命令 -对于像 where.exe
这样的外部应用程序,这意味着强制关闭它。
所以 -1
不是真正的退出代码,它只是 PowerShell 用来表示“我们永远不会知道,因为我杀了他们”的“未知退出代码”值。
我正在尝试确定 git
的可执行文件的路径。由于可能通过 PATH
目录找到多个可执行文件,因此我想将结果限制在一个路径中。
使用以下构造时,PowerShell 将 $LastExitCode
设置为 -1
,尽管找到了可执行文件。
$git_path = "$(where.exe git | select-object -first 1)"
我想知道为什么要设置此退出代码?
Select -First <int>
通过收集必要的输入量(在您的情况下只有 1 个字符串)来工作 - 之后它 where.exe
这样的外部应用程序,这意味着强制关闭它。
所以 -1
不是真正的退出代码,它只是 PowerShell 用来表示“我们永远不会知道,因为我杀了他们”的“未知退出代码”值。