Je veux remplacer une chaîne par une autre mais je ne peux pas. Le code est:SH - Remplacer le texte
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
Et le résultat est:
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
Pour la réponse que je ne ai pas besoin d'utiliser sed, mais il est semble facile et bon. J'utilise Sh pas bash parce que je veux que le code peut utiliser dans tous les systèmes, donc je préfère les réponses qui suivent ce principe
MISE À JOUR
sed -i "s/$OLD/$NEW/" $MCRYPTINI
erreur:
sed: -e expression #1, char 14: unknown option to `s'
Avez-vous déjà essayé d'ajouter un '/' '$ après new' dans l'expression 'sed'? – Danibix
Ok, cela a résolu le problème ... Mais la chaîne n'a pas changé – oootramas
Copie possible de [Utiliser une variable dans une commande sed] (https://stackoverflow.com/questions/11146098/use-a-variable-in -a-sed-command) – Danibix