2016-04-11 64 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 工作對我來說