我有下面的脚本给我语法错误,如果我添加单引号在行尾,我正在分配java vm参数。为什么这个语法是错误的?
#!/bin/bash
#Incorrect
JVM_OPTS='-XX:+UseG1GC -Xms250M -Xmx250M -Xss1M -DVAR1='"$VALUE1"' -DVAR2='"$VALUE2"'
START_CMD="java ${JVM_OPTS} ${JVM_ARGS} -jar ${1}"
$START_CMD
#!/bin/bash
#Correct
JVM_OPTS='-XX:+UseG1GC -Xms250M -Xmx250M -Xss1M -DVAR1='"$VALUE1"' -DVAR2='"$VALUE2"
START_CMD="java ${JVM_OPTS} ${JVM_ARGS} -jar ${1}"
$START_CMD
2条答案
按热度按时间h9vpoimq1#
您应该使用数组(和/或函数)
3df52oht2#
让我们匹配开始和结束引号:
您的报价不匹配。
但是使用@chepner的建议,将命令构建成单个字符串肯定会失败。