Sed dans un script

Résolu
thierryR51 Messages postés 139 Date d'inscription   Statut Membre Dernière intervention   -  
thierryR51 Messages postés 139 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Contributeur Dernière intervention   6 430
 
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   Statut Membre Dernière intervention   8
 
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   Statut Contributeur Dernière intervention   6 430 > thierryR51 Messages postés 139 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   8
 
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   Statut Contributeur Dernière intervention   6 430 > thierryR51 Messages postés 139 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   8
 
OK Merci zipe31. Je vais suivre ton expérience.
0