我想開發一個bash腳本,它將替換/附加配置文件中的一些行。我遇到了一個問題,那就是sed在我的替換行中沒有考慮到空格。這是我設置:Unix/Linux Bash腳本編寫:sed不考慮空格
sedkey="org.apache.catalina.core.ThreadLocalLeakPreventionListener"
sednew="<Listener\ className=\"org.apache.catalina.mbeans.JmxRemoteLifecycleListener\"\ rmiRegistryPortPlatform=\"7050\"\ rmiServerPortPlatform=\"7051\"\ \/\>"
sed -e "/"$sedkey"/a\\
"$sednew"" server-wc.xml
但是當我運行含有該腳本,我得到這個:
sed: can't read className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"\: No such file or directory
sed: can't read rmiRegistryPortPlatform="7050"\: No such file or directory
sed: can't read rmiServerPortPlatform="7051"\: No such file or directory
sed: can't read \/\>: No such file or directory
雖然它增加了超過號和「監聽器」完全正常的少。
所以我的問題是,我做錯了什麼?
嘗試'sed'/'「$ sedkey」'/ a \'「$ sednew」server-wc.xml「...'sednew'中的雙引號與您的sed命令的外雙引號衝突 – Sundeep
非常完美,非常感謝! – user3074653
或者可能不是,空格造成的問題...請參閱@that其他人的回答... – Sundeep