将args[]传递给带有空格的java应用程序

将args[]传递给带有空格的java应用程序,java,bash,Java,Bash,如果通过bash脚本将arg传递给java应用程序,并且arg包含空格,那么如何使java应用程序将整个字符串视为arg而不仅仅是第一个单词?例如,通过bash将以下两个参数传递给java: var1="alpha beta zeta" var2="omega si epsilon" script.sh $var1 $var2 (在script.sh中) (javaApp内部) javaApp中my param变量的值仅获取单词,而不是整行: "param1 is alpha" "param

如果通过bash脚本将arg传递给java应用程序,并且arg包含空格,那么如何使java应用程序将整个字符串视为arg而不仅仅是第一个单词?例如,通过bash将以下两个参数传递给java:

var1="alpha beta zeta"
var2="omega si epsilon"

script.sh $var1 $var2
(在script.sh中)

(javaApp内部)

javaApp中my param变量的值仅获取单词,而不是整行:

"param1 is alpha"
"param2 is beta"

我可以在javaApp中更改什么,以看到通过args[]传入的整个字符串作为参数,而不仅仅是它遇到的第一个单词?

问题在于shell脚本的编写方式,而不是Java程序

您需要引用以下参数:

script.sh "$var1" "$var2"

调用
script.sh
时,应将参数用引号括起来:

$ script.sh "$var1" "$var2"
这些线路:

var1="alpha beta zeta"
var2="omega si epsilon"

实际上,不要在
var1
var2
的字符串中包含引号。

问题是,在调用
script.sh
时,您已经在合并变量了(一旦合并,就无法再次拆分它们)

所以你可以这样做:

var1="alpha beta zeta"
var2="omega si epsilon"

script.sh "$var1" "$var2"

使用下划线表示空格。在javaApp中将下划线转换为空格。
var1="alpha beta zeta"
var2="omega si epsilon"
var1="alpha beta zeta"
var2="omega si epsilon"

script.sh "$var1" "$var2"