Shel

Résolu/Fermé
lamou23 Messages postés 178 Date d'inscription lundi 11 janvier 2010 Statut Membre Dernière intervention 21 mars 2011 - 16 mai 2010 à 20:33
lamou23 Messages postés 178 Date d'inscription lundi 11 janvier 2010 Statut Membre Dernière intervention 21 mars 2011 - 17 mai 2010 à 18:24
salut

j'ai un fichier shell adresse.sh contenant:

#!/bin/bash

ipdns="192.168.80.128"

ipweb="192.168.80.131"

ipftp="192.168.80.129"

ipmessagerie="192.168.80.132"

**************************************************************

dans un autre fichier je veux récupérer les variables déclarées dans le fichier ci-dessus dans un autre fichier de telle sorte que j'aie:

#!/bin/bash

source /var/www/script/adresse.sh

# ce que je veux c'est de parcourir les lignes de adresse.sh et a chawue fois on récupère #l'adresse ip dans la variabele ip comme suit

ip="192.168.80.128 192.168.80.129"
for t in $ip

do

{ instruction}

done


est il possible de le faire??
aidez moi svp
merci
A voir également:

1 réponse

Urielxx Messages postés 190 Date d'inscription mardi 26 août 2008 Statut Membre Dernière intervention 25 juin 2013 46
16 mai 2010 à 21:32
Uniquement avec un "source", ce n'est pas possible car ton shell ne peut pas savoir quelles sont les variables qui ont été chargées en lisant ton fichier adresse.sh

Je ne sais pas exactement ce que tu veux faire, mais pour répondre à ta question, tu peux faire un
ips='grep -v '^#' adress.sh | sed -e 's/.*="//' -e 's/"//' '

for ip in $ips
do
..
done


Je n'ai pas testé, le grep sert a retirer les commentaires, les sed a retirer les guillemets et les débuts de lignes, c'est améliorable, mais le principe est là.
0
lamou23 Messages postés 178 Date d'inscription lundi 11 janvier 2010 Statut Membre Dernière intervention 21 mars 2011
16 mai 2010 à 21:48
salut
j'ai essayé ça:

#!/bin/bash
ips=$(grep -v '^#' adresseip.sh | sed -e 's/.*="//' -e 's/"//' )

for ip in $ips
do
echo $ips
done


et le fichier adresseip.sh contient:

#!/bin/bash

ipdns="192.168.80.128"

ipweb="192.168.80.131"

ipftp="192.168.80.129"

lorsque j'ai exécuté j'ai eu ça:

192.168.80.128 192.168.80.131 192.168.80.129 192.168.80.132
192.168.80.128 192.168.80.131 192.168.80.129 192.168.80.132
192.168.80.128 192.168.80.131 192.168.80.129 192.168.80.132
192.168.80.128 192.168.80.131 192.168.80.129 192.168.80.132
répétition 4 fois de la ligne moi je veux selement ça:

192.168.80.128 192.168.80.131 192.168.80.129 192.168.80.132

merci
0
lamou23 Messages postés 178 Date d'inscription lundi 11 janvier 2010 Statut Membre Dernière intervention 21 mars 2011
17 mai 2010 à 17:17
merci pour la réponse c'est la bonne finalement
:)
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
17 mai 2010 à 17:31
Salut,

ips=$(egrep -o '([0-9]{1,3}\.){3}[0-9]{1,3}' adresseip.sh)

Devrait suffire ;-))
0
lamou23 Messages postés 178 Date d'inscription lundi 11 janvier 2010 Statut Membre Dernière intervention 21 mars 2011
17 mai 2010 à 18:16
je peux avoir une petite explication sur l'expression régulière
merci
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
17 mai 2010 à 18:18
https://www.commentcamarche.net/faq/911-regexp-recuperer-une-adresse-ip
0