gpt4 book ai didi

powershell - 为什么 PowerShell 拆分包含连字符和句点的参数?

转载 作者:行者123 更新时间:2023-12-04 14:57:38 26 4
gpt4 key购买 nike

在 PowerShell 窗口中:

PS C:\> echo -abc.def.ghi
-abc
.def.ghi

出于某种原因,连字符和句点的组合导致 Powershell 将参数分成两行。

没有连字符就不会发生:

PS C:\> echo abc.def.ghi
abc.def.ghi

没有期间时也不会发生:

PS C:\> echo -abcdefghi
-abcdefghi

通过实验,我发现我可以用反引号来逃避这种行为:

PS C:\> echo `-abc.def.ghi
-abc.def.ghi

但是为什么会出现这种情况呢?我不理解 PowerShell 语法的哪些基本部分?

最佳答案

我已经反汇编了Microsoft.PowerShell.Utility 来查看Write-Output 的代码没什么特别的,它只是遍历 InputObject 并将每个传递给 WriteObject当前实现的方法ICommandRuntime .

Disassembled <code>Write-Output</code>

我的猜测是处理文本的分词器会尝试匹配以 - 开头的任何内容。到一个声明的参数。如果失败,它会将其作为 -InputObject 中的一个项目通过管道。 .自 .不能是变量名称的一部分,因此不能是开关名称的一部分,它可能会在执行 if 检查之前将其分开,当它成为参数时,它不会将其与其余部分连接起来 token 。因此,您可能发现了一个小错误。

当使用反勾号或引号时,它不会犯这个错误,因为它可以标记整个事物。

不过,这都是猜想,我很想和你一样看到权威的答案。

编辑

我所说的证据:

PS> echo -NoEnumerate.foo
.foo

关于powershell - 为什么 PowerShell 拆分包含连字符和句点的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28704867/

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