如何从解析内部命令中逃避单引号?

时间:2012-10-30 12:43:43

标签: linux bash shell

我必须在底部作为脚本中的特定用户启动命令。参数$ vmargs需要用单引号('$ vmargs')。我被困在这里因为它总是被解析。 vmargs参数中有一些java选项。

 su synesty -c "screen -dmS appscreen ./eclipse -vmargs 
                -DAPP_ENV=$automatey_note  $vmargs"

希望任何人都可以提供帮助。

更新:抱歉,我看到我的问题不明确。必须解决该参数。

 '-DencryptorCredentials=currentPass|oldPass|1 -Xms512m -Xmx2048m 
 -DLOGGING_HOME=configuration/ -Djava.io.tmpdir=/tmp -Dorg.osgi.service.http.port=8081
 -Declipse.ignoreApp=true -Dosgi.noShutdown=true -Xdebug         
 -Xnoagent
 -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=n 
 -Djava.net.preferIPv4Stack=true -DapplyDbMigrations=true -XX:MaxPermSize=128m     
 -XX:-HeapDumpOnOutOfMemoryError '

这些东西,我需要单引号,否则shell不会将其识别为参数

2 个答案:

答案 0 :(得分:1)

只需在$vmargs附近加上单引号即可。它仍然会被扩展,因为整个事情都是双引号。

su synesty -c "screen -dmS appscreen ./eclipse -vmargs -DAPP_ENV=$automatey_note '$vmargs'"

答案 1 :(得分:1)

如果你想将$vmargs传递给su synesty不变,请“逃避”将保留字符串的美元: -

su synesty -c "screen -dmS appscreen ./eclipse -vmargs -DAPP_ENV=$automatey_note \$vmargs"

相关问题