【发布时间】:2021-03-25 14:27:44
【问题描述】:
PowerShell 不像 cmd.exe 或 sh 那样拆分命令参数。我遇到的问题是. 字符有时但并非总是会引发新的争论。
举例说明:
PS D:\temp> gc .\list-args.py
import sys
print(*sys.argv, sep='\n')
PS D:\temp> py .\list-args.py a.txt .\b -c=d -e=.\f -g.h -.i=j
.\list-args.py
a.txt
.\b
-c=d
-e=
.\f
-g
.h
-.i=j
PS D:\temp>
Powershell 使用什么规则将一个命令行参数与下一个命令行参数分开?
这些记录在哪里?
【问题讨论】:
-
在使用外部命令时可以使用停止解析符号
--%。 -
您可以在这里找到更多信息:about Parsing
-
@Olaf 感谢您的提示。
--%当然很有趣,但我能做的并不是重点。我可以简单地将我的论点用引号括起来。 about_Parsing 看起来应该回答这个问题,但我认为它实际上并没有......据我所知about_Command_Syntax 也没有 -
.在 powershell 中最常用来表示“执行这个”。要么将数据作为字符串操作,要么按照其他人的建议调整解析器。 -
我发现了另一个文档,感觉它应该包含答案:Appendix C: The PowerShell grammar——它提供了一个提示,
.不允许出现在<ParameterToken>中,但其他字符不允许出现在该模式的行为方式不同,因此也无济于事
标签: powershell