Shel

Résolu
lamou23 Messages postés 218 Statut Membre -  
lamou23 Messages postés 218 Statut Membre -
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

1 réponse

  1. Urielxx Messages postés 223 Statut Membre 46
     
    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
    1. lamou23 Messages postés 218 Statut Membre
       
      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
    2. lamou23 Messages postés 218 Statut Membre
       
      merci pour la réponse c'est la bonne finalement
      :)
      0
    3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Salut,

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

      Devrait suffire ;-))
      0
    4. lamou23 Messages postés 218 Statut Membre
       
      je peux avoir une petite explication sur l'expression régulière
      merci
      0
    5. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      https://www.commentcamarche.net/faq/911-regexp-recuperer-une-adresse-ip
      0