2016-02-10 116 views
0

裏面工作,我有一個sed命令像這樣註釋掉基於特定模式的特定線路:我的sed命令不是shell腳本

sed -e '/$OLD_VERSION/ s/^#*/#/' -i /ws/usernam/workspace/scripts/raw-vobs-config-spec 

在這裏,我們需要註釋掉包含$OLD_VERSION行。我在shell腳本中通過了$OLD_VERSION作爲參數。

+1

它在控制檯中工作嗎? – Thanga

+0

請參閱:[bash中單引號和雙引號之間的區別](http://stackoverflow.com/q/6697753/3776858) – Cyrus

+0

'sed命令就像這樣'!='this sed command'。猜猜需要哪一個來幫助解決您在給定命令時遇到的問題。你發佈的命令將不會**做你想做的事,無論你從哪裏調用它。 –

回答

1

當您在shell中使用單引號時,它會阻止普通變量擴展,因此$OLD_VERSION將不會擴展。由於您沒有任何其他字符需要轉義,因此修復應該像使用雙引號一樣簡單:

sed -e "/$OLD_VERSION/ s/^#*/#/" -i /ws/usernam/workspace/scripts/raw-vobs-config-spec 
+0

感謝你使用雙引號的陳述 – panda