Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2776 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Erreur lors de tests if

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Erreur lors de tests if

n°1065566
redvivi
Posté le 10-08-2008 à 21:19:18  profilanswer
 

Code :
  1. #!/bin/sh
  2. getip() {
  3. ipinfo=`curl http://ipinfo/ip.php`
  4. ip=`echo $ipinfo |cut -f1 -d\;`
  5. hostname=`echo $ipinfo |cut -f2 -d\;`
  6. echo $ip
  7. echo $hostname
  8. }
  9. #Lancement de la procédure
  10. getip
  11. if (( `echo $hostname | grep .net` -o `echo $hostname | grep .com` ))
  12. then
  13. getip
  14. elif (( `echo $hostname | grep .info` -o `echo $hostname | grep .org` ))
  15. then
  16. getip
  17. fi
  18. exit
 

Parfois, j'ai une erreur de ce type:

 
Code :
  1. line 17:  ((: -o domain.info  : syntax error in expression (error token is "domain.info " )
 

Que celà signifie t-il ?

 

Merci d'avance !
RedVivi


Message édité par redvivi le 10-08-2008 à 21:23:34
mood
Publicité
Posté le 10-08-2008 à 21:19:18  profilanswer
 

n°1065596
weed
Posté le 11-08-2008 à 00:48:54  profilanswer
 

qu'il y une erreur dans ta syntaxe
 
et moi non plus je comprends rien à ton if ....
 
tu es sur de ton -o ?  
 
pourquoi ne pas utiliser tout simplement utiliser soit l'opérateur d'égalité = , soit !=, soit -eq (equal), soit -ne (not equal)
 
exemple :
if [ "totot" = "titi" ]

n°1065598
redvivi
Posté le 11-08-2008 à 00:53:00  profilanswer
 

Ce n'est pas le but, -o (cf bash) signifie OR, je teste la présence ou non de la chaine de caractere .net, .org, .com etc..

n°1065602
zeblods
Posté le 11-08-2008 à 01:33:47  profilanswer
 

Si le but est simplement de déterminer si la variable se termine par ".com", ".net", etc. Essaye ça :

 

test=`echo $hostname | egrep '\.(net|com|info|org)$'`
if [ ${#test} -ne 0 ]; then
        getip
fi

 

\.(net|com|info|org)$ => reconnais toutes les chaines finissant par ".com", ".net", ".info", ou ".org"

 

Remarque : Il y a sûrement une façon plus simple de le faire, mais c'est la seule que je connais...

Message cité 1 fois
Message édité par zeblods le 11-08-2008 à 01:39:43
n°1065605
redvivi
Posté le 11-08-2008 à 01:45:22  profilanswer
 

zeblods a écrit :

Si le but est simplement de déterminer si la variable se termine par ".com", ".net", etc. Essaye ça :
 

test=`echo $hostname | egrep '\.(net|com|info|org)$'`
if [ ${#test} -ne 0 ]; then
        getip
fi


 
\.(net|com|info|org)$ => reconnais toutes les chaines finissant par ".com", ".net", ".info", ou ".org"
 
Remarque : Il y a sûrement une façon plus simple de le faire, mais c'est la seule que je connais...


 
En fait je voudrais reconnaitre toutes les chaines "contenant" et non "se terminant par"
 
Il y a possibilité d'inclure les paramètres de test directement dans le test apres le if au lieu de passer par une variable ?

n°1065606
zeblods
Posté le 11-08-2008 à 01:51:51  profilanswer
 

redvivi a écrit :

 

En fait je voudrais reconnaitre toutes les chaines "contenant" et non "se terminant par"

 

Il y a possibilité d'inclure les paramètres de test directement dans le test apres le if au lieu de passer par une variable ?


Dans ce cas :

test=`echo $hostname | egrep '\.(net|com|info|org)'`
if [ ${#test} -ne 0 ]; then
        getip
fi

 

Et pour tout mettre dans le if, justement là j'ai pas encore trouvé de solution...
Le seul truc qui marche (de tout ce que j'ai déja testé), c'est de mettre le résultat dans une variable, puis de tester si cette variable est de taille nulle...

 


PS : Si tu veux plutot faire ce script en perl, il te suffirait de faire :

if($hostname =~ /\.(net|com|info|org)/) {
        getip();
}



Message édité par zeblods le 11-08-2008 à 01:57:15
n°1065632
redvivi
Posté le 11-08-2008 à 09:37:42  profilanswer
 

C'est le (re)drame, maintenant j'ai une erreur de type:
 

Code :
  1. grep: Echec du pairage de ) ou de \)


 
Pas courant comme erreur..keskivapa?

n°1065676
zeblods
Posté le 11-08-2008 à 11:20:56  profilanswer
 

redvivi a écrit :

C'est le (re)drame, maintenant j'ai une erreur de type:
 

Code :
  1. grep: Echec du pairage de ) ou de \)


 
Pas courant comme erreur..keskivapa?


T'as pas le même nombre de "(" et de " )".

n°1065679
redvivi
Posté le 11-08-2008 à 11:26:48  profilanswer
 

Ben pourtant j'ai bien une ouverture et une fermeture...!? (cf ton script)

n°1065710
zeblods
Posté le 11-08-2008 à 12:04:56  profilanswer
 

Pourtant chez moi ce script fonctionne sans soucis :

test=`echo $hostname | egrep '\.(net|com|info|org)'`
if [ ${#test} -ne 0 ]; then
        getip
fi

 

Ah, et j'utilise bash pour exécuter le script

 

Par contre si tu as essayer ce script la :

if($hostname =~ /\.(net|com|info|org)/) {
        getip();
}


il faut définir perl comme interpréteur.


Message édité par zeblods le 11-08-2008 à 12:08:22
mood
Publicité
Posté le 11-08-2008 à 12:04:56  profilanswer
 

n°1065817
redvivi
Posté le 11-08-2008 à 16:12:27  profilanswer
 

C'est pas possible, voici mon code:

 
Code :
  1. #!/bin/sh (j'ai essayé /bin/bash aussi)
  2. getip() {
  3. ipinfo=`curl --silent --max-time 60 --connect-timeout 30 http://xxxx.xxx/ip.php`
  4. ip=`echo $ipinfo |cut -f1 -d\;`
  5. hostname=`echo $ipinfo |cut -f2 -d\;`
  6. echo $ip
  7. echo $hostname
  8. }
  9. #hostname est du genre: blabla.inet.us par exemple
  10. #Lancement de la procédure
  11. getip
  12. #Vérification des hostnames
  13. test=`echo $hostname | egrep '.\(edu|com|net|anon)'`
  14. if [ ${#test} -ne 0 ]; then
  15.         getip
  16. fi
  17. exit
 

Et l'erreur:

Code :
  1. grep: Échec du pairage de ) ou de \)
 

Comprends pas pourquoi ça marche pas

Message cité 1 fois
Message édité par redvivi le 11-08-2008 à 16:15:07
n°1065864
Taz
bisounours-codeur
Posté le 11-08-2008 à 17:47:23  profilanswer
 

Code :
  1. if grep foo <(echo foo) >/dev/null; then echo FOO; fi


Message édité par Taz le 11-08-2008 à 17:47:34
n°1065866
zeblods
Posté le 11-08-2008 à 17:56:32  profilanswer
 

redvivi a écrit :

C'est pas possible, voici mon code:
 

Code :
  1. #!/bin/sh (j'ai essayé /bin/bash aussi)
  2. getip() {
  3. ipinfo=`curl --silent --max-time 60 --connect-timeout 30 http://xxxx.xxx/ip.php`
  4. ip=`echo $ipinfo |cut -f1 -d\;`
  5. hostname=`echo $ipinfo |cut -f2 -d\;`
  6. echo $ip
  7. echo $hostname
  8. }
  9. #hostname est du genre: blabla.inet.us par exemple
  10. #Lancement de la procédure
  11. getip
  12. #Vérification des hostnames
  13. test=`echo $hostname | egrep '.\(edu|com|net|anon)'`
  14. if [ ${#test} -ne 0 ]; then
  15.         getip
  16. fi
  17. exit


 
Et l'erreur:

Code :
  1. grep: Échec du pairage de ) ou de \)


 
Comprends pas pourquoi ça marche pas


Et avec test=`echo "$hostname" | egrep '.\(edu|com|net|anon)'` ?

n°1065890
redvivi
Posté le 11-08-2008 à 19:54:47  profilanswer
 

Non plus, par contre Taz merci de ra réponse mais j'ai pas bien saisi la portée ce celle-ci..:-\
 

n°1065915
zeblods
Posté le 11-08-2008 à 21:07:20  profilanswer
 

redvivi a écrit :

Non plus, par contre Taz merci de ra réponse mais j'ai pas bien saisi la portée ce celle-ci..:-\
 


Mouarf, je viens de voir qu'en fait tu avais inversé la position du "\" ...

 

test=`echo $hostname | egrep '\.(edu|com|net|anon)'`

 

Faute que j'ai recopié sans faire attention par la suite...


Message édité par zeblods le 11-08-2008 à 21:08:33
n°1065918
redvivi
Posté le 11-08-2008 à 21:11:33  profilanswer
 

Oh bien vu !!
 
Merci !

n°1065928
redvivi
Posté le 11-08-2008 à 21:39:13  profilanswer
 

Oui mais non, c'est le redrame, il ne reconnait que les chaines finissant par les expressions désignés et non celles qui contiennent les expressions, moi et les regexp c'est la galère alors...

n°1065930
zeblods
Posté le 11-08-2008 à 21:44:13  profilanswer
 

redvivi a écrit :

Oui mais non, c'est le redrame, il ne reconnait que les chaines finissant par les expressions désignés et non celles qui contiennent les expressions, moi et les regexp c'est la galère alors...


Avec egrep '\.(edu|com|net|anon)' ça reconnais le pattern peut importe sa position dans la chaine.
Avec egrep '\.(edu|com|net|anon)$' ça signifie que le pattern doit se situé à la fin de la chaine.

n°1065932
redvivi
Posté le 11-08-2008 à 21:54:49  profilanswer
 

Non ça ne fonctionne pas, il reconnait uniquement les fins de chaines
 
essaye avec
 

Code :
  1. hostname=anonymiser.fgffgfgsf.fi

n°1065933
zeblods
Posté le 11-08-2008 à 22:03:58  profilanswer
 

redvivi a écrit :

Non ça ne fonctionne pas, il reconnait uniquement les fins de chaines

 

essaye avec

 
Code :
  1. hostname=anonymiser.fgffgfgsf.fi



??? Il faut reconnaître quoi la dedans ? ça ne contient ni .edu, ni .com, ni .net, ni .anon

 

Or c'est bien ce que tu cherches ?

redvivi a écrit :

Ce n'est pas le but, -o (cf bash) signifie OR, je teste la présence ou non de la chaine de caractere .net, .org, .com etc..

 


Dis clairement quelles sont les pattern a trouver


Message édité par zeblods le 11-08-2008 à 22:06:36
n°1065935
redvivi
Posté le 11-08-2008 à 22:06:32  profilanswer
 

Ra horreur, j'ai compris, non je je ne veux pas de .edu, juste edu (pas le point)

n°1065939
zeblods
Posté le 11-08-2008 à 22:08:39  profilanswer
 

redvivi a écrit :

Ra horreur, j'ai compris, non je je ne veux pas de .edu, juste edu (pas le point)


egrep 'edu|\.com|\.net|anon'

 

La par exemple ça reconnais : edu, .com, .net, anon


Message édité par zeblods le 11-08-2008 à 22:10:26
n°1065957
zeblods
Posté le 11-08-2008 à 23:02:02  profilanswer
 

J'ai fait copier coller de ton code sur mon PC, j'ai lancé le script et je ne rentre pas dans la boucle...

 

[EDIT] le temps que je réponde, redvivi à supprimé son post...


Message édité par zeblods le 11-08-2008 à 23:02:42
n°1065964
redvivi
Posté le 11-08-2008 à 23:32:39  profilanswer
 

Oui, en fait dès que je rentrais une fois dans la boucle je n'y sortait plus ! Problème corrigé ! En tout cas merci pour ton aide et ta patience (sic!)

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Erreur lors de tests if

 

Sujets relatifs
Samba+LDAP>Erreur de connection... a 127.0.01fatale erreur : urpmi verrouillé (fait ch***)
erreur de compliationerreur lors de la compilation sysvinit
PB AIX 5.3 erreur 3004-10 [Résolu]Erreur sur une copie en (md0 Raid5) : assez fou comme truc !
Smartd et erreur de permissionsDebian sdg : spinning up disk(quelqu'un a déja rencontrer cette erreur
Erreur Install MandrivaErreur lors du lancement d'apache, puis pendant la réinstall !
Plus de sujets relatifs à : Erreur lors de tests if


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)