2016-04-11 67 views
0

我对shell脚本并不陌生。我有一个shell脚本中有一个特殊字符的命令。现在我不知道如何从每个单词中逃脱特殊字符。在shell脚本中的命令中转义特殊字符

/应用/主页/ apache243 /斌/的httpd -f /应用/阿帕奇$ CONFIGS/statichost1.conf

当你看到阿帕奇$ CONFIGS具有特殊字符和空格。现在我想从这个命令中逃脱所有特殊字符,除了从/httpd -f/。现在这个特殊字符可以在/httpd -f/之前和之后出现。即它可能是apache $ 243这个或这apache! 234 @。 /httpd -f /之前和之后。我想要的是低于

/应用/ SYMC/apache243 /斌/的httpd -f /应用/阿帕奇\ $ \ CONFIGS/statichost1.conf

回答

0

(使用单引号)写这样的命令:

/app/symc/apache243/bin/httpd -f '/app/apache$ configs/statichost1.conf' 

顺便说一句,这种问题,如果你指定你正在寻找答案的shell,它总是有帮助。虽然在这种特殊情况下,至少在我知道的所有这些贝壳中,引用的作用是相同的,但这并不总是如此。

+0

这个命令得到上运行时它不是静态的产生。所以每次**/httpd - [A-z]/**之后的字符串被修改。它们可以包含特殊字符。这就像是从**/httpd - [A-z]/**中除去每个命令字中的特殊字符。 @ user1934428。它是一个bash shell。 – vivek

0

我找到了答案。 如果我们在shell脚本变量,像这样

VAR = /应用/主页/ apache243 /斌/的httpd -f '/app/apache$configs/statichost1.conf' 价值,我们尝试执行(具体到Apache服务器配置)

是$ var -S

将无法​​正常工作。至少对我来说,没有工作
但是这样做

EVAL $ VAR -S 工作对我来说