Variable vide

Résolu/Fermé
thierryR51 Messages postés 139 Date d'inscription dimanche 5 juillet 2015 Statut Membre Dernière intervention 22 juin 2021 - 26 févr. 2016 à 16:31
thierryR51 Messages postés 139 Date d'inscription dimanche 5 juillet 2015 Statut Membre Dernière intervention 22 juin 2021 - 27 févr. 2016 à 12:48
Bonjour,
Je suis confus de demander de l'aide pour ce problème mais je m'arrache les cheveux sur ce qui devrait être simple.
Voilà ce qui m'amène.
Je lis un fichier et extrait cette ligne:
192.168.1.86 MaMaison
J'en extrait l'IP dans une variable:
oldip=$(grep "MaMaison" /etc/hosts | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}');

Cette variable est vide.
 echo "Ancienne IP:" $oldip

Si je fais la même chose en dehors du script
grep "MaMaison" /etc/hosts | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}'

J'ai bien la bonne réponse.
192.168.1.86
Pourquoi ?


A voir également:

3 réponses

dubcek Messages postés 18757 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 19 décembre 2024 5 623
26 févr. 2016 à 16:44
hello
si l'affichage se fait en dehors du script, la variable a disparu avec la fin du script
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:57
Pour le test j'ai demandé en 2e ligne le résultat de cette variable. Je suis bien dans le script... Au vu de ta réponse, il semblerait que je n'ai pas fait de faute. Je vais donc creuser plus encore pour comprendre. Merci.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
26 févr. 2016 à 18:57
Salut,
Si je fais la même chose en dehors du script
grep "MaMaison" /etc/hosts | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}'

J'ai bien la bonne réponse.
Et si tu fais la même chose dans le script sans déclarer la variable, juste la commande ?

L'IP s'affiche ?
0
thierryR51 Messages postés 139 Date d'inscription dimanche 5 juillet 2015 Statut Membre Dernière intervention 22 juin 2021 8
Modifié par thierryR51 le 26/02/2016 à 19:41
J'approche du but. C'est encore ma variable qui est mal lue.
Quand je mets
 oldip=$(grep "MaMaison" /etc/hosts | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}');

Ça marche.
Si je mets:
 oldip=$(grep "${origine}" /etc/hosts | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}');

Ça ne marche pas.
Si j'enlève les double cotes, ça ne change rien

Si je fais:
echo "origine" $origine
# récupération de l'ancienne IP.
oldip=$(grep "MaMaison" /etc/hosts | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}');

echo "origine "$origine
echo "Valeur" $oldip;
exit 0;


origine MaMaison
origine MaMaison
Valeur 192.168.1.86


et si je fais
echo "origine" $origine
# récupération de l'ancienne IP.
oldip=$(grep "${origine}" /etc/hosts | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}');

echo "origine" $origine
echo "Valeur" $oldip;
exit 0;

J'obtiens:
# sh /home/thierry/Documents/scripts/hosts
origine MaMaison
origine MaMaison
Valeur



Chercheur en améliorations.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
26 févr. 2016 à 19:36
"${origine}"
contient bien ce qu'il faut ?
0
thierryR51 Messages postés 139 Date d'inscription dimanche 5 juillet 2015 Statut Membre Dernière intervention 22 juin 2021 8
Modifié par thierryR51 le 26/02/2016 à 19:47
Ben oui, j'ai complété le post juste avant pour qu'on y voit plus clair
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419 > thierryR51 Messages postés 139 Date d'inscription dimanche 5 juillet 2015 Statut Membre Dernière intervention 22 juin 2021
26 févr. 2016 à 19:52
Rajoute
set -x
au début de ton script et affiche le résultat.
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 à 19:55
Ça donne ça:
+ echo origine $'MaMaison\r'
origine MaMaison
++ grep $'MaMaison\r' /etc/hosts
++ grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}'
+ oldip=
+ echo origine $'MaMaison\r'
origine MaMaison
+ echo Valeur
Valeur
+ exit 0
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419 > thierryR51 Messages postés 139 Date d'inscription dimanche 5 juillet 2015 Statut Membre Dernière intervention 22 juin 2021
26 févr. 2016 à 19:58
echo origine $'MaMaison\r'

Voilà le coupable ;-(((

Script fait sous Windows (retour chariot).

Convertit ton script au format Unix (dos2unix) et recommence ;-)
0