传递多个带空格的字符串参数时遇到问题。 我知道有答案,但我的情况不同,也不太了解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:“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]
预期输出:[名称:john,地址1:“451 7th Street”,地址2:“6430 Stream Side Court”]以便我可以拆分:并获取相应的键值。
答案 0 :(得分:0)
在参数周围使用双引号将每个参数视为单个参数:
java -jar "$PATH_TO_JAVA_MAIN" "$1" "$2" "$3" "$4" "$5"
与调用该shell脚本相同:
./script.sh "Address one two three" "other" "possible" "arguments"