Quel débat !
Mais pour la solution de Flodelarab reste parfaite !
mon but était a faire cette requête
Code:
1
2
3
4
5
6
7 if [ "$req2" = "$req1" ] then STATUS="OK" else STATUS="WRONG ADRESS" fi
Version imprimable
Quel débat !
Mais pour la solution de Flodelarab reste parfaite !
mon but était a faire cette requête
Code:
1
2
3
4
5
6
7 if [ "$req2" = "$req1" ] then STATUS="OK" else STATUS="WRONG ADRESS" fi
Oui, on aime bien entre nous discuter des différentes méthodes possibles avec leurs avantages et inconvénients. Cela ne gène en rien le posteur car en générale on essaye de donner une solution complète donc il a toujours sa réponse mais nous entre nous on apprend parfois des trucs...
Bah, ça aurait été bien d'avoir la question entière.
Déjà au niveau code c'est malavisé de mettre des chaines comme status. Déjà une chaine c'est lourd à gérer (si l'appelant doit comparer avec "OK" ou "WRONG ADRESS" ça lui fera lourd) et en plus ce n'est pas conventionnel ni portable (si tu modifies ton programme, tous ceux qui l'utilisent devront modifier le leur).
La convention, c'est de mettre 0 pour "ok" et autre chose pour "pb" et de faire retourner cette valeur. Si tu veux affiner tu peux mettre 1, 2 ou 3 pour indiquer la cause exacte de l'erreur sinon c'est pas grave tant que ce n'est pas 0 (et pas plus de 255 car c'est la limite)
Exemple: script.sh
Code:
1
2
3
4
5
6
7
8
9
10
11 #!/bin/sh req1=$(mysql ...) req2=$(mysql...) it test "$req1" = "$req2" then status=0 else status=1 # ou status=123 si t'as envie... fi ... exit $status
Ainsi, l'appelant pourra directement faire tester le script par le if du shell sans avoir à regarder si la chaine vaut "OK" ou "WRONG ADRESS"
Exemple
Code:
1
2
3
4
5
6
7
8 #!/bin/sh if script.sh # oui oui, après if on n'est pas obligé d'utiliser "test". On peut mettre n'importe quel programme Unix que l'on désire. Tant que celui-ci se comporte en booléen (0=vrai, "pas 0"=faux) ça fonctionne... then ... # (je gère le cas où le script n'a pas eu de pb)... else ... # (je gère le cas où le script a indiqué qu'il a un pb)... fi ... (suite du code)...
Ensuite si req1 et req2 ne sont utilisées qu'une fois, alors elles sont inutiles...
Code:
1
2
3
4 #!/bin/sh test "$(mysql...)" = "$(mysql...)" && status=0 || status=1 ... exit $status
Et comme tu l'as remarqué, les variables sont en minuscules pour éviter d'interférer avec les variables de ton environnement (comme HOME, LOGNAME, PATH, etc.) qui peuvent être utilisées aussi par ton programme. En effet, tu ne sais pas si "STATUS" n'est pas déjà pris pour autre chose. Tu peux mettre des majuscules pour représenter les mots (nbLigneFichier=...) mais pas de nom de variable tout en majuscule...
En faite des question j'en ai beaucoup , je te résume mon problèmeCitation:
Bah, ça aurait été bien d'avoir la question entière.
j'utilise une solution de monitoring zabbix si ca te parle. Mon but est d'assurer une surveillance d'un réseau avec un utilitaire arpwatch. Ce dernier permet l'enregistrement dans un fichier texte des adresse ip, mac que cette utilitaire surveille.
Le but de ce script est de pouvoir comparer les adresses mac et ip en cas d'usurpation adresses avec le bail d'un serveur dhcp.
Sinon j'ai bien noté la synthaxe pour les tests et vais corriger de suite mon script.
Merci pour l'explication