2017-02-01 18 views
0

'-Dmyprop = abc $ 354' получает оценку -Dmyprop = abc54, даже если он присутствует в одинарных кавычках. Есть ли способ обойти это?

eval exec '"/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java"' '"-Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties"' -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager '-Dmyprop=abc$354' -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources '-Djava.endorsed.dirs="/usr/local/tomcat/endorsed"' -classpath '"/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar"' '-Dcatalina.base="/usr/local/tomcat"' '-Dcatalina.home="/usr/local/tomcat"' '-Djava.io.tmpdir="/usr/local/tomcat/temp"' org.apache.catalina.startup.Bootstrap start

exec /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dmyprop=abc54 -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Djava.endorsed.dirs=/usr/local/tomcat/endorsed -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start

+2

Почему вы используете 'eval' вообще? – chepner

+1

Вам действительно нужен «eval» здесь? – codeforester

+0

Одиночные кавычки существуют только до тех пор, пока оболочка не проверит аргументы 'eval'; 'eval' сам их не видит. – chepner

ответ

1

короткий ответ: вы должны избежать его с \ и открыть/закрыть "добавить ""

одиночные кавычки литерал в отличие от двойников. пример побега: закрыть ', открыть ", закрыть", снова открыть синглы. Таким образом, вы можете интерполировать или избежать того, что вам нужно в сингловой строке. Это расстраивает. вот пример: