gpt4 book ai didi

java - 无法让 PowerShell 读取 * 字符

转载 作者:行者123 更新时间:2023-11-30 06:53:28 28 4
gpt4 key购买 nike

我是 Java 编程的初学者,当我尝试创建一个计算器时,我遇到了这个问题:powershell 设法正确读取除星号之外的每个字符,我尝试以多种方式编写它: *, "*", '*' 但它仍然充当通配符而不是适当的星号。我该如何解决?

示例:如果我写

java Calculator 1 2 *

java Calculator 1 2 "\*"

java Calculator 1 2 '*'

这些都不起作用,并且它总是以星号作为通配符。

最佳答案

您的问题与PowerShell本身无关,因为它传递* - 但是,它没有引用 ,无论您使用 *"*" 还是 '*'

因此,问题是:您的目标程序需要什么样的*引用才能将*视为文字而不是 glob(通配符表达式)?

例如,如果您需要确保目标命令将 * 视为 "*",则必须使用文字(嵌入)双引号:

java Calculate 1 2 `"*`"     # `" escapes a literal "

或者,使用带有嵌入文字 " 实例的单引号:

java Calculate 1 2 '"*"'

请注意,由于 Powershell 无法将 \ 识别为转义字符,因此按原样使用 \* 就足以传递文字字符序列 \* - 不带引号 - 到 java

<小时/>

可选背景信息:

PowerShell - 与 POSIX-like shell(在 Unix 世界中)不同 - 本身不会自动扩展(不带引号的)通配符类参数,例如 * 来匹配文件名(由目标命令来解释此类通配符)。

因此,当您调用 java 等外部实用程序时,* 等标记会被传递

但是,无论您使用不带引号的 * 还是将其引用为 '*'"*" 在这种情况下都没有区别,因为 PowerShell 在执行自己解析后,重建命令行,仅在需要时使用(双)引号将参数括起来 .

Token * 需要 no 引用,因为它没有嵌入空格,因此,当 java 时,命令的所有 3 个变体都会产生完全相同的命令行 被调用:类似 c:\path\to\java Calculator 1 2 *

因此,例如,保证外部实用程序将参数视为 " 封闭的唯一方法是使用 " 字符。参数的字面部分,如上所示。

关于java - 无法让 PowerShell 读取 * 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42265416/

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