2016-11-24 29 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內存不足時,回顯「錯誤」時有什麼值? –