在PowerShell窗口中:
PS C:\> echo -abc.def.ghi
-abc
.def.ghi
Run Code Online (Sandbox Code Playgroud)
由于某种原因,连字符和句点的组合会导致Powershell将参数拆分为两行.
没有连字符就不会发生这种情况:
PS C:\> echo abc.def.ghi
abc.def.ghi
Run Code Online (Sandbox Code Playgroud)
当没有时期时也不会发生:
PS C:\> echo -abcdefghi
-abcdefghi
Run Code Online (Sandbox Code Playgroud)
通过实验,我发现我可以通过反复来逃避这种行为:
PS C:\> echo `-abc.def.ghi
-abc.def.ghi
Run Code Online (Sandbox Code Playgroud)
但为什么会这样呢?我不理解PowerShell语法的基本部分是什么?
我已经反汇编了Microsoft.PowerShell.Utility来查看Write-Output那里没什么特别的代码,它只是迭代通过InputObject并将每个传递给WriteObject当前实现的方法ICommandRuntime.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
849 次 |
| 最近记录: |