2016-11-24 31 views
0

我在尝试指定某些JVM选项时遇到问题。假设我有以下脚本。如何在包含单引号时扩展变量

#!/bin/bash 

OPTS="-XX:OnOutOfMemoryError='echo error' -Xmx10m" 

java -cp test.jar $OPTS java.Test 

我运行脚本时出现此错误:如果我用下面的脚本

#!/bin/bash 

java -cp test.jar -XX:OnOutOfMemoryError='echo error' -Xmx10m java.Test 

Error: Could not find or load main class error'

验证一切正常,有没有什么办法让第一个脚本工作?

+0

[双引号,以防止通配和分词。(https://github.com/koalaman/shellcheck/wiki/SC2086) – Inian

回答

1

是的。你可以引述OPTS变量一样,

java -cp test.jar "$OPTS" java.Test 
+0

我试过,但他们得到了我以下错误 #java.lang.OutOfMemoryError:请求的数组大小超过VM限制 #-XX:OnOutOfMemoryError =“'回显错误'-Xmx10m” #执行“'回显错误'-Xmx10m”... sh:echo错误:找不到命令 –

+0

它将“回显错误”视为命令 –

+0

@RuiLi尝试'/ bin/echo' ......但是真的,当JVM内存不足时,回显“错误”时有什么值? –