我有运行java二进制文件的脚本,想要传递将在OutOfMemoryException发生时执行的复杂命令。问题比较笼统,与OOME无关。如何将命令放在变量中并将其传递给稍后将执行的其他脚本? 这是我试图执行的代码。我尝试了不同的转义选项,但没有任何结果。在执行期间,shell尝试在空格上拆分JAVA_OPTS,无论我如何逃避它。 #!/ bin / sh的
JAVA_OPTS="-Xmx10m"
JAVA_OPTS="$JAVA_OPTS \"-XX:OnOutOfMemoryError=echo 'Ups'\""
set -x
java $JAVA_OPTS TestMemory
我发现了这个:BashFAQ 050,但所涵盖的案例都不适用于我。我无法将此代码放在函数中,因为JVM进程无法访问它。 当我将整个命令作为一行时,它运行良好,但我的用例有点不同,我无法修改最后一行。 JAVA_OPTS应该在其他地方构建,然后如示例代码所示使用。
答案 0 :(得分:0)
唯一明智的做法是使用bash数组(或ksh / zsh)
JAVA_OPTS=( "-Xmx10m" )
JAVA_OPTS+=( "-XX:OnOutOfMemoryError=echo 'Ups'" )
set -x
java "${JAVA_OPTS[@]}" TestMemory
答案 1 :(得分:-1)
试试这个
JAVA_OPTS="-Xmx10m"
read JAVA_OPTS<<eod
$JAVA_OPTS "-XX:OnOutOfMemoryError=echo 'Ups'
eod
set -x
java $JAVA_OPTS TestMemory
# you may need to change it slightly