0

我有一个 bash 脚本,它执行 Java 命令并将空格分隔的字符串作为参数传递。假设 java 类是“HelloWorld”,所需的参数作为“-environment WIN XP”传递。所以我的脚本中的行是:

        env = WIN XP
        arg=" -environment $env"
        javaCmd="java -Xmx2000m foo.bar.HelloWorld $arg"
        $javaCmd

我的 HelloWorld 类仅获得部分参数 -environment WIN 并引发错误,因为它期望 -environment WIN XP 作为一个整体带有空格。有什么方法可以确保将整个字符串视为一次而不在空格处拆分。

4

2 回答 2

4

我正在尝试将命令放入变量中,但复杂的情况总是失败!

您需要使用数组来保留哪些元素包含空格:

    env="WIN XP"
    javaCmd=( java -Xmx2000m foo.bar.HelloWorld -environment "$env" )
    "${javaCmd[@]}"

以上所有引用都是必要的

于 2013-09-21T16:47:41.707 回答
2

=分配变量时,名称和名称之间不应有空格。我建议您使用与变量不同的名称env。此外,这里的变量arg也不是必需的。您可以直接将其合并到javaCmd.

env="WIN XP" 
javaCmd="java -Xmx2000m foo.bar.HelloWorld -environment $env"
$javaCmd
于 2013-09-21T14:33:50.747 回答