2017-02-01 6 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

ここに本当に「評価」が必要ですか? – codeforester

+0

単一引用符は、シェルが 'eval'への引数を評価するまで存在します。 'eval'自体はそれらを見ません。 – chepner

答えて

1

短い答え: あなたは\でエスケープする必要があるとオープン/クローズ」 "" を追加

単一引用符は、ダブルスとは異なり、リテラルです。エスケープの例: 閉じる '、開く'、閉じる '、再び開いてください。このようにして、必要なものをシングルストリングで補間またはエスケープすることができます。そのイライラした。ここに例があります:

tempSample=$(awk 'BEGIN { rounded = sprintf("%.0f", '"$((size1/div))"'); print rounded }') 
関連する問題