如何将多个带有空格的字符串从shell脚本传递给java main方法

时间:2017-09-03 16:08:13

标签: java unix

传递多个带空格的字符串参数时遇到问题。 我知道有答案,但我的情况不同,也不太了解shell脚本。

我的shell脚本的值为(其非常简单的脚本没有其他内容)

java -jar $PATH_TO_JAVA_MAIN $1 $2 $3 $4 $5

现在$ 1仅是强制性的,其他是可选的。对shell脚本的输入就像 从命令行输入:

name:john address1:451 7th Street S.W address2:6430 Stream Side Court

现在在java main方法中,我在单独的数组索引中得到这些,如

arg[1]=address1:451
arg[2]=7th
arg[3]=Street
arg[4]=address2:6430
arg[5]=Stream
arg[6]=Side 
arg[7]=Court

但我希望该地址为address1和address2的一个字符串。

我尝试了两种方式作为输入

  1. 姓名:约翰地址1:“451 7th Street S.W”地址2:“6430 Stream Side Court” 导致我的java类中的String arg []:

    LOGGER.info(“输入值args:”+ Arrays.toString(args));

    输入值args :[name:john,address1:451,7th,Street,address2:6430,Stream,Side,Court]

  2. 预期输出:[名称:john,地址1:“451 7th Street”,地址2:“6430 Stream Side Court”]以便我可以拆分:并获取相应的键值。

1 个答案:

答案 0 :(得分:0)

在参数周围使用双引号将每个参数视为单个参数:

java -jar "$PATH_TO_JAVA_MAIN" "$1" "$2" "$3" "$4" "$5"

与调用该shell脚本相同:

./script.sh "Address one two three" "other" "possible" "arguments"