我想用另一個替換一個字符串,但是我不能。該代碼是: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/$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不打壞,因爲我想要的代碼可以在所有的系統使用,所以我更喜歡後面的答案是原則
UPDATE
sed -i "s/$OLD/$NEW/" $MCRYPTINI
錯誤:
sed: -e expression #1, char 14: unknown option to `s'
您是否已經嘗試過加入'/'$ NEW'後'在'sed'表達式中? – Danibix
好的,這就解決了問題......但字符串沒有改變 – oootramas
[在sed命令中使用變量]的可能重複(https://stackoverflow.com/questions/11146098/use-a-variable-in -a-sed-command) – Danibix