Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 26/10/2011, à 17:24

Alponse

[Résolu] Sed undetermined 's'

Bonjour tout le monde smile

Je suis en train d'écrire un fichier bat dans lequel je remplace une chaîne de caractère par une autre: sed -e 's/ubuntu2/'"$hostname"'/g' /etc/hosts

Quand j’exécute mon batch j'ai cette erreur : undetermined 's' command. J'ai essayé sed -e "s/ubuntu2/$hostname/g" /etc/hosts mais toujours la même erreur. Est-ce que quelqu'un aurait une idée s'il vous plaît ?

D'avance merci smile

Dernière modification par Alponse (Le 26/10/2011, à 18:20)

Hors ligne

#2 Le 26/10/2011, à 17:37

aduxas

Re : [Résolu] Sed undetermined 's'

S'agit-il du retour de la commande hostname ou de la chaine "$hostname" ou du contenu d'une variable hostname?  Cette dernière n'existe pas par défaut.

Hors ligne

#3 Le 26/10/2011, à 17:38

Postmortem

Re : [Résolu] Sed undetermined 's'

Salut,
Tu veux remplacer ubuntu2 par la valeur de la variable hostname (il faut donc qu'elle existe) ou litérallement par $hostname :
Si c'est par la valeur de la variable :

sed "s/ubuntu2/${hostname}/g" /etc/hosts

Si c'est par $hostname (tel quel) :

sed 's/ubuntu2/$hostname/g' /etc/hosts

Dernière modification par Postmortem (Le 26/10/2011, à 17:38)


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#4 Le 26/10/2011, à 17:42

pingouinux

Re : [Résolu] Sed undetermined 's'

Bonjour,
Si hostname contient des /, il faut utiliser un autre caractère dans sed :

sed -e "s=ubuntu2=$hostname=g" /etc/hosts

Hors ligne

#5 Le 26/10/2011, à 17:50

Postmortem

Re : [Résolu] Sed undetermined 's'

pingouinux a écrit :

Bonjour,
Si hostname contient des /, il faut utiliser un autre caractère dans sed :

sed -e "s=ubuntu2=$hostname=g" /etc/hosts

Ah oui, bien vu !


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#6 Le 26/10/2011, à 17:58

Alponse

Re : [Résolu] Sed undetermined 's'

Merci beaucoup pour vos réponses smile

Effectivement je voudrais remplacer ubuntu2 par la valeur de la variable hostname (résultat d'une requête mysql). J'ai essayé

sed -i "s/ubuntu2/${hostname}/g" /etc/hosts

et rebelote :
sed -e expression #1, char 17 : undetermined 's' command

Et ma variable $hostname contient : ubuntu4

Hors ligne

#7 Le 26/10/2011, à 18:06

aduxas

Re : [Résolu] Sed undetermined 's'

sed -i est dangereux!  Tu risques de te retrouver avec un fichier vide.  J'ai essayé ta commande avec et sans les {} et les deux donnent le bon résultat.  Est-tu sous sudo pour faire cela?

EDIT:  il manque -e dans ta commande

Dernière modification par aduxas (Le 26/10/2011, à 18:06)

Hors ligne

#8 Le 26/10/2011, à 18:15

Alponse

Re : [Résolu] Sed undetermined 's'

Chez moi il n'y a qu'avec les parenthèses que ça marche ^^'. 

sed -i "s/ubuntu2/$(hostname)/g" /etc/hosts

Merci beaucoup smile
Et j'ai accordé les droits sur le fichier hosts. La commande a bien changé ubuntu2 en ubuntu4 dans le fichier hosts. Est-ce qu'il  y a quand même un risque que le fichier se retrouve vide lors d'une prochaine exécution ?

Hors ligne

#9 Le 26/10/2011, à 18:29

pingouinux

Re : [Résolu] Sed undetermined 's'

C'est parce que hosname est une fonction, et non une variable, qu'il faut mettre des parenthèses. $(hostname) est le résultat de la fonction.

Je pense que la variable hostname contenait aussi quelque chose (avec des / ?). Que donne :

echo $hostname

Dernière modification par pingouinux (Le 26/10/2011, à 18:40)

Hors ligne

#10 Le 26/10/2011, à 19:40

aduxas

Re : [Résolu] Sed undetermined 's'

Alponse a écrit :

Est-ce qu'il  y a quand même un risque que le fichier se retrouve vide lors d'une prochaine exécution ?

Je ne pense pas, mais sed -i , c'est du "YAFIYGI" : you asked for it, you got it.  Si ta commande sed contient une bêtise, tu ne peux pas retourner en arrière.  Mieux vaut toujours essayer sans -i et bien vérifier avant.

Dernière modification par aduxas (Le 26/10/2011, à 19:41)

Hors ligne

#11 Le 26/10/2011, à 20:01

Postmortem

Re : [Résolu] Sed undetermined 's'

Ou pour changer directement dans le fichier avec moins de risque :

sed -i'.sav' "s/ubuntu2/$(hostname)/g" /etc/hosts

Ce qui fait une sauvegarde du fichier.


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#12 Le 28/10/2011, à 17:16

Alponse

Re : [Résolu] Sed undetermined 's'

Merci pour le tuyau, ça m'évitera des mauvaises surprises (un fichier hosts vide par exemple lol)

echo $hostname me donne ubuntu4. En tout cas merci parce que le coup des parenthèses j'aurais continué à chercher un bon moment.

Hors ligne