我有一个执行Java命令的bash脚本,并将空格分隔的String作为参数传递。可以说java类是“HelloWorld”,并且必需的参数传递为 “ - 环境WIN XP”。所以我的脚本中的行是:
env = WIN XP
arg=" -environment $env"
javaCmd="java -Xmx2000m foo.bar.HelloWorld $arg"
$javaCmd
我的HelloWorld类只获取部分参数-environment WIN并抛出一个错误,因为它期望-environment WIN XP作为一个整体的空格。有什么方法可以确保将整个String视为一次而不会在空白处进行拆分。
答案 0 :(得分:4)
I'm trying to put a command in a variable, but the complex cases always fail!
您需要使用数组来保留哪些元素包含空格:
env="WIN XP"
javaCmd=( java -Xmx2000m foo.bar.HelloWorld -environment "$env" )
"${javaCmd[@]}"
以上所有引用都是必要的
答案 1 :(得分:2)
分配变量时,=
和名称之间不应有空格。我建议你使用与env
不同的名称作为变量。此处变量arg
也不是必需的。您可以直接将其合并到javaCmd
。
env="WIN XP"
javaCmd="java -Xmx2000m foo.bar.HelloWorld -environment $env"
$javaCmd