文件名为IsSUE的BASH空格

时间:2013-09-21 14:28:11

标签: bash solaris

我有一个执行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视为一次而不会在空白处进行拆分。

2 个答案:

答案 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