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

时间:2013-06-03 15:39:52

标签: java bash

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

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

script.sh $var1 $var2

(在script.sh内)

#!/bin/bash
java -cp javaApp "$@"

(在javaApp中)

param1 = args[0];
param2 = args[1];

javaApp中我的param变量的值只得到单词,而不是整行:

"param1 is alpha"
"param2 is beta"

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

3 个答案:

答案 0 :(得分:7)

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

您需要引用参数:

script.sh "$var1" "$var2"

答案 1 :(得分:1)

当你致电script.sh时,你应该用参数包装参数:

$ script.sh "$var1" "$var2"

这些行:

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

实际上并未在var1var2的字符串中包含引号。

答案 2 :(得分:0)

问题是你在调用script.sh时已经合并了变量(一旦它们被合并,就没有办法再次拆分它们。)

所以做的事情如下:

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

script.sh "$var1" "$var2"