Sed dans un script

Résolu
thierryR51 Messages postés 144 Statut Membre -  
thierryR51 Messages postés 144 Statut Membre -
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.

1 réponse

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    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
    1. thierryR51 Messages postés 144 Statut Membre 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
      1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501 > thierryR51 Messages postés 144 Statut Membre
         
        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
    2. thierryR51 Messages postés 144 Statut Membre 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
      1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501 > thierryR51 Messages postés 144 Statut Membre
         
        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
    3. thierryR51 Messages postés 144 Statut Membre 8
       
      OK Merci zipe31. Je vais suivre ton expérience.
      0