将args[]传递给带有空格的java应用程序
如果通过bash脚本将arg传递给java应用程序,并且arg包含空格,那么如何使java应用程序将整个字符串视为arg而不仅仅是第一个单词?例如,通过bash将以下两个参数传递给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
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"