#1 Le 26/10/2011, à 17:24
- Alponse
[Résolu] Sed undetermined 's'
Bonjour tout le monde
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
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'
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
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
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'
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 )
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