Sed SH-替换文本

Sed SH-替换文本,sed,replace,sh,Sed,Replace,Sh,我想用另一个字符串替换一个字符串,但我不能。代码是: updatedb MCRYPTINI=$(locate mcrypt.ini | grep 'apache2') MCRYPTSO=$(locate mcrypt.so | grep "/mcrypt.so") OLD="extension=mcrypt.so" NEW="extension=$MCRYPTSO" echo $MCRYPTINI echo $MCRYPTSO echo $OLD echo $NEW echo "'s/$OL

我想用另一个字符串替换一个字符串,但我不能。代码是:

updatedb
MCRYPTINI=$(locate mcrypt.ini | grep 'apache2')
MCRYPTSO=$(locate mcrypt.so | grep "/mcrypt.so")

OLD="extension=mcrypt.so"
NEW="extension=$MCRYPTSO"

echo $MCRYPTINI
echo $MCRYPTSO
echo $OLD
echo $NEW
echo "'s/$OLD/$NEW' $MCRYPTINI"

sed -i 's/$OLD/$NEW' $MCRYPTINI
结果是:

sudo sh testScript.sh
/etc/php5/apache2/conf.d/20-mcrypt.ini
/usr/lib/php5/20121212/mcrypt.so
extension=mcrypt.so
extension=/usr/lib/php5/20121212/mcrypt.so
's/extension=mcrypt.so/extension=/usr/lib/php5/20121212/mcrypt.so' /etc/php5/apache2/conf.d/20-mcrypt.ini
sed: -e expression #1, char 11: unterminated `s' command
对于响应,我不需要使用“sed”,但它看起来很简单而且很好。 我使用sh而不是bash,因为我希望代码可以在所有系统中使用,所以我更喜欢遵循这一原则的答案

更新

sed -i "s/$OLD/$NEW/" $MCRYPTINI
错误:

sed: -e expression #1, char 14: unknown option to `s'

添加斜杠和双引号:

sed -i  "s/$OLD/$NEW/" file
解决办法可以是:

sed -i "s/$OLD/$NEW/" $MCRYPTINI
但是
$NEW
是一个路径,所以我需要用其他字符更改“/”,例如“+”


您是否已尝试在
sed
表达式中的
$NEW
之后添加
/
?好的,这就解决了问题。。。但是字符串没有更改最后一个斜杠的可能重复项是正确的,但是带有双引号-->sed:-e expression#1,char 34:unknown选项到's'@oootramas:最后一个斜杠在代码段中丢失。并且还需要添加双引号。
sed -i "s+$OLD+$NEW+" $MCRYPTINI