如果您通过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 []传递的整个字符串作为参数而不仅仅是它遇到的第一个单词?
答案 0 :(得分:7)
问题在于编写 shell脚本的方式,而不是Java程序。
您需要引用参数:
script.sh "$var1" "$var2"
答案 1 :(得分:1)
当你致电script.sh
时,你应该用参数包装参数:
$ script.sh "$var1" "$var2"
这些行:
var1="alpha beta zeta"
var2="omega si epsilon"
实际上并未在var1
和var2
的字符串中包含引号。
答案 2 :(得分:0)
问题是你在调用script.sh
时已经合并了变量(一旦它们被合并,就没有办法再次拆分它们。)
所以做的事情如下:
var1="alpha beta zeta"
var2="omega si epsilon"
script.sh "$var1" "$var2"