命令行参数的问题,其中包含空格

8 java

我遇到了一个奇怪的问题,经过大量的调试,我找到了理由的原因.我有一个Java程序,我通过bash脚本在Linux环境中执行.

这是我的简单bash脚本,它接受一个String.

#!/bin/bash
java -cp  com.QuoteTester $1
Run Code Online (Sandbox Code Playgroud)

问题是命令行参数可以是Spaces或没有空格.例如,它可以是

Apple Inc. 2013 Jul 05 395.00 Call   
Run Code Online (Sandbox Code Playgroud)

根据我的代码,就是这样

Apple
Run Code Online (Sandbox Code Playgroud)

所以问题是,当我试图以这种方式执行它时

./quotetester Apple Inc. 2013年7月5日395.00致电

它唯一总是去else condition那股票.

无论如何我能解决这个问题吗?

Roh*_*ain 18

当您使用空格传递命令行参数时,它们将被视为空格分隔的参数,并在空间上进行拆分.所以,你实际上没有一个参数,而是多个参数.

如果要使用空格传递参数,请使用引号:

java classname "Apple Inc. 2013 Jul 05 395.00 Call"
Run Code Online (Sandbox Code Playgroud)


Bri*_*new 7

这不是一个Java问题本身.这是一个shell问题,适用于您使用此类参数调用的任何内容.你的shell正在拆分参数并将它们分别提供给Java进程.

你必须引用这些参数,以便shell不会拆分它们.例如

$ java  -cp ... "Apple Inc. 2013"
Run Code Online (Sandbox Code Playgroud)

等.请看这里进行更长时间的讨论.