Erreur lors de tests if - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 11-08-2008 à 00:48:54
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" ]
Marsh Posté le 11-08-2008 à 00:53:00
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..
Marsh Posté le 11-08-2008 à 01:33:47
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)$'` |
\.(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...
Marsh Posté le 11-08-2008 à 01:45:22
zeblods a écrit : Si le but est simplement de déterminer si la variable se termine par ".com", ".net", etc. Essaye ça :
|
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 ?
Marsh Posté le 11-08-2008 à 01:51:51
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)'` |
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)/) { |
Marsh Posté le 11-08-2008 à 09:37:42
C'est le (re)drame, maintenant j'ai une erreur de type:
Code :
|
Pas courant comme erreur..keskivapa?
Marsh Posté le 11-08-2008 à 11:20:56
redvivi a écrit : C'est le (re)drame, maintenant j'ai une erreur de type:
|
T'as pas le même nombre de "(" et de " )".
Marsh Posté le 11-08-2008 à 11:26:48
Ben pourtant j'ai bien une ouverture et une fermeture...!? (cf ton script)
Marsh Posté le 11-08-2008 à 12:04:56
Pourtant chez moi ce script fonctionne sans soucis :
test=`echo $hostname | egrep '\.(net|com|info|org)'` |
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)/) { |
il faut définir perl comme interpréteur.
Marsh Posté le 11-08-2008 à 16:12:27
C'est pas possible, voici mon code:
Code :
|
Et l'erreur:
Code :
|
Comprends pas pourquoi ça marche pas
Marsh Posté le 11-08-2008 à 17:47:23
Code :
|
Marsh Posté le 11-08-2008 à 17:56:32
redvivi a écrit : C'est pas possible, voici mon code:
|
Et avec test=`echo "$hostname" | egrep '.\(edu|com|net|anon)'` ?
Marsh Posté le 11-08-2008 à 19:54:47
Non plus, par contre Taz merci de ra réponse mais j'ai pas bien saisi la portée ce celle-ci..:-\
Marsh Posté le 11-08-2008 à 21:07:20
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...
Marsh Posté le 11-08-2008 à 21:39:13
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...
Marsh Posté le 11-08-2008 à 21:44:13
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.
Marsh Posté le 11-08-2008 à 21:54:49
Non ça ne fonctionne pas, il reconnait uniquement les fins de chaines
essaye avec
Code :
|
Marsh Posté le 11-08-2008 à 22:03:58
redvivi a écrit : Non ça ne fonctionne pas, il reconnait uniquement les fins de chaines essaye avec
|
??? 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
Marsh Posté le 11-08-2008 à 22:06:32
Ra horreur, j'ai compris, non je je ne veux pas de .edu, juste edu (pas le point)
Marsh Posté le 11-08-2008 à 22:08:39
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
Marsh Posté le 11-08-2008 à 23:02:02
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...
Marsh Posté le 11-08-2008 à 23:32:39
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!)
Marsh Posté le 10-08-2008 à 21:19:18
Parfois, j'ai une erreur de ce type:
Que celà signifie t-il ?
Merci d'avance !
RedVivi
Message édité par redvivi le 10-08-2008 à 21:23:34