Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';无法让PowerShell读取*字符_Java_Powershell - Fatal编程技术网

Java Can';无法让PowerShell读取*字符

Java Can';无法让PowerShell读取*字符,java,powershell,Java,Powershell,我是Java编程的初学者,在尝试创建计算器时,我遇到了一个问题:powershell能够正确读取除星号以外的所有字符,我尝试了多种方式编写:“*”,“*”,但它仍然充当通配符,而不是正确的星号。我该如何解决这个问题 例:如果我写 java Calculator 1 2 * java Calculator 1 2 "\*" java Calculator 1 2 '*' 这些都不起作用,而且它总是以通配符的形式获取星号。您尝试过使用转义字符“\*”吗 例如: java Calculator

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

例:如果我写

java Calculator 1 2 *

java Calculator 1 2 "\*"

java Calculator 1 2 '*'

这些都不起作用,而且它总是以通配符的形式获取星号。

您尝试过使用转义字符“\*”吗

例如:

java Calculator 1 2 \*

您的问题与PowerShell本身无关,因为它传递
*
,但是,无论您使用
*
“*”
还是
“*”
,它都不引用

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

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

java Calculate 1 2 `"*`"     # `" escapes a literal "
或者,使用带有嵌入文字
实例的单引号:

java Calculate 1 2 '"*"'
请注意,由于Powershell无法将
\
识别为转义字符,因此按原样使用
\*
就足以将文本字符序列
\*
-无引号-传递给
java


可选背景信息: 与POSIX类shell(在Unix世界中)不同,PowerShell本身不会自动将类似于通配符的参数(如
*
)扩展到匹配的文件名(由目标命令来解释此类通配符)

因此,当您调用外部实用程序(如
java
)时,
*
之类的令牌将被传递

但是,在这种情况下,无论是使用
*
无引号,还是将其引用为
'*'
“*”
,都没有区别,因为PowerShell在执行自己的解析后,会重新生成命令行,仅在需要时使用(双引号)对参数进行引用

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


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

尝试将其转义
\*
查看Powershell提示。尝试了\*和“\*“它给了我一个不同的输出\系统卷信息,但它仍然没有将其作为\*和“\*”的星号读取,它给了我一个不同的输出\系统卷信息,但它仍然没有将其作为asterisk@SashaToscano:我的荣幸;我很高兴这有帮助。