3

如果您通过 bash 脚本将 arg 传递给 java 应用程序,并且 arg 包含空格,那么如何使 java 应用程序将整个字符串视为 arg 而不仅仅是第一个单词?例如,通过 bash 将以下两个参数传递给 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 中的参数变量的值只得到单词,而不是整行:

"param1 is alpha"
"param2 is beta"

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

4

3 回答 3

7

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

您需要引用参数:

script.sh "$var1" "$var2"
于 2013-06-03T15:41:44.390 回答
1

调用时应将参数括在引号中script.sh

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

这些行:

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

实际上不包括var1's 和var2' 字符串中的引号。

于 2013-06-03T15:42:34.577 回答
0

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

所以做类似的事情:

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

script.sh "$var1" "$var2"
于 2013-06-03T15:43:35.793 回答