Sed dans un script

Résolu/Fermé
thierryR51 Messages postés 139 Date d'inscription dimanche 5 juillet 2015 Statut Membre Dernière intervention 22 juin 2021 - Modifié par thierryR51 le 26/02/2016 à 14:37
thierryR51 Messages postés 139 Date d'inscription dimanche 5 juillet 2015 Statut Membre Dernière intervention 22 juin 2021 - 26 févr. 2016 à 17:58
Bonjour,

Quand J'écris cela dans un script:
sed -e "$cde" -i /etc/hosts;

L'exécution me dit:
sed: -e expression n°1, caractère 32: option inconnue pour `s'

Si j'écris avec le contenu de la variable:
sed -e s/86.66.183.122/86.66.183.123/g  -i /etc/hosts;

Ça fonctionne.
A mon avis il devrait y avoir une erreur de syntaxe, mais j'ai essayé plein de solution et je n'y arrive pas.

Une idée ?



Chercheur en améliorations.
A voir également:

1 réponse

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
26 févr. 2016 à 14:46
Salut,

Affiche la variable ${cde} (
echo "${cde}"
) avant de la passer à sed histoire de voir si elle est bien conforme à tes attentes.

Tu peux aussi rajouter
set -x
à ton script juste en dessous du shebang (
#!/bin/bash
) histoire de voir ce qu'interprète le shell
0
thierryR51 Messages postés 139 Date d'inscription dimanche 5 juillet 2015 Statut Membre Dernière intervention 22 juin 2021 8
26 févr. 2016 à 15:32
Effectivement ça marche. Par contre je constate que s'il n'y a pas d’occurrence à remplacer on obtient le message "option inconnue pour `s'".
Merci zipe31.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407 > thierryR51 Messages postés 139 Date d'inscription dimanche 5 juillet 2015 Statut Membre Dernière intervention 22 juin 2021
26 févr. 2016 à 15:38
Par contre je constate que s'il n'y a pas d’occurrence à remplacer on obtient le message "option inconnue pour `s'".
Tu veux parler d'occurrence (syntaxe de sed) vide ou de variable ($cde) vide ?
0
thierryR51 Messages postés 139 Date d'inscription dimanche 5 juillet 2015 Statut Membre Dernière intervention 22 juin 2021 8
26 févr. 2016 à 15:41
Dans notre exemple si $cde est correct et si "sed" ne trouve rien à remplacer dans le fichier hosts, il met ce message d'erreur en console.
Voila. J'espère mieux m'exprimer. Merci.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407 > thierryR51 Messages postés 139 Date d'inscription dimanche 5 juillet 2015 Statut Membre Dernière intervention 22 juin 2021
26 févr. 2016 à 15:49
C'est bizarre ;-\

Normalement sed n'est pas très réputé pour être très bavard, surtout dans ce genre de cas ;-\

Par contre le fait de mettre une commande entière dans une variable n'est peut-être pas ce qui se fait de mieux.
Il vaudrait mieux privilégier 2 variables :

ip_ini="86.66.183.122"
ip_rep="86.66.183.123"
sed -i "s/${ip_ini}/${ip_rep}/" /etc/hosts


Le "g" est inutile, il n'y a pas 2 adresses similaires sur la même ligne dans le fichier hosts ;-\
0
thierryR51 Messages postés 139 Date d'inscription dimanche 5 juillet 2015 Statut Membre Dernière intervention 22 juin 2021 8
26 févr. 2016 à 17:58
OK Merci zipe31. Je vais suivre ton expérience.
0