|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : septembre 2006 Messages : 339 ![]() |
Bonjour
j ai une fonction qui crashe si je lui passe un argument non entier. Je voudrais ajouter un test pour m'avertir aund le type du premier argument n'est pas entier. ?? Merci |
|
|
00
|
|
|
#2 | ||
![]() ![]() Alain Ingénieur d'études décisionnel Inscription : mai 2002 Messages : 4 451 ![]() |
Quelque chose comme ça ?
Code :
__________________
Modérateur Langage SQL N'oubliez pas le bouton et pensez aux balises [code]Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur ![]() |
||
|
|
00
|
|
|
#3 |
|
Expert Confirmé Sénior
![]() francois Ingénieur systèmes et réseaux Inscription : juillet 2006 Messages : 3 546 ![]() |
utiliser les type sets permet d'éviter de tester les valeurs après leur entrées ce qui interdit donc toute erreur de détection potentielle.
man bash man ksh |
|
|
00
|
|
|
#4 |
![]() ![]() Alain Ingénieur d'études décisionnel Inscription : mai 2002 Messages : 4 451 ![]() |
Mais il ne faut pas oublier de trapper le message d'erreur...
__________________
Modérateur Langage SQL N'oubliez pas le bouton et pensez aux balises [code]Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur ![]() |
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : septembre 2006 Messages : 339 ![]() |
j'ai essayé :
typeset -i $1="99999999" ca ne marche pas.. erreur de syntaxe? |
|
|
00
|
|
|
#6 | |
![]() ![]() Alain Ingénieur d'études décisionnel Inscription : mai 2002 Messages : 4 451 ![]() |
Citation:
__________________
Modérateur Langage SQL N'oubliez pas le bouton et pensez aux balises [code]Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur ![]() |
|
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : septembre 2006 Messages : 339 ![]() |
oui oui je viens de le faire comme ceci
il fallait donc declarer une variable puis l'utiliser en tant que telle dans ma fonction Le problème, c'est que si je lui rentre un non entier, il le convertit à zéro et continue le traitement, alors aue je veux au'il sorte (sans oublier aussi le fait que je peux avoir besoin du zéro) |
|
|
00
|
|
|
#8 |
|
Membre du Club
![]() Inscription : septembre 2006 Messages : 339 ![]() |
je me suis peut être mal exprimé.
Quand j'utilise tout se passe bien, sauf que si j'appelle ma fonction ainsi : (shell biensur) " mafonction eeee ", je n'ai pas de message d'erreur, mais plutot la fonction s'exécute normalement comme ci je l'ai appelé ainsi : " mafonction 0" |
|
|
00
|
|
|
#9 | ||||
![]() ![]() Alain Ingénieur d'études décisionnel Inscription : mai 2002 Messages : 4 451 ![]() |
C'est au moment de l'affectation qu'une erreur est générée ou non
Il faut donc tester le code retour de l'affectation Code :
Code :
__________________
Modérateur Langage SQL N'oubliez pas le bouton et pensez aux balises [code]Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur ![]() |
||||
|
|
00
|
|
|
#10 | ||
|
Membre éprouvé
![]() Ingénieur systèmes et réseaux Inscription : août 2007 Messages : 508 ![]() |
Bah pour faire plus simple,
il y'a l'option -n qui permet de tester si un arg est un entier. Code :
|
||
|
00
|
|
|
#11 | ||
|
Membre du Club
![]() Inscription : septembre 2006 Messages : 339 ![]() |
d'abord, le -n ne marche pas... il s'agit de tester si la longueur de la chaine donnée en argument est nulle ou pas, et je ne sais pas ou est ce que t'as trouvé ça, mais je suis preneur s'il s'avère vrai (en tout cas j'ai testé et ça ne marche pas)
sinon, le problème avec Code :
Merci |
||
|
|
00
|
|
|
#12 |
![]() ![]() Alain Ingénieur d'études décisionnel Inscription : mai 2002 Messages : 4 451 ![]() |
$? contient la valeur de retour de la dernière commande exécutée, ici l'affectation, pas la valeur de la variable
__________________
Modérateur Langage SQL N'oubliez pas le bouton et pensez aux balises [code]Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur ![]() |
|
|
00
|
|
|
#13 | |||
|
Membre éprouvé
![]() Ingénieur systèmes et réseaux Inscription : août 2007 Messages : 508 ![]() |
Citation:
man test: -n string True if the length of string is non-zero. |
|||
|
00
|
|
|
#14 | |
![]() ![]() Alain Ingénieur d'études décisionnel Inscription : mai 2002 Messages : 4 451 ![]() |
Citation:
__________________
Modérateur Langage SQL N'oubliez pas le bouton et pensez aux balises [code]Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur ![]() |
|
|
|
00
|
|
|
#15 | |||
|
Membre éprouvé
![]() Ingénieur systèmes et réseaux Inscription : août 2007 Messages : 508 ![]() |
bah g compris, après il me dit ça :
Citation:
|
|||
|
00
|
|
|
#16 | |
![]() ![]() Alain Ingénieur d'études décisionnel Inscription : mai 2002 Messages : 4 451 ![]() |
Il répondait à ça :
Citation:
__________________
Modérateur Langage SQL N'oubliez pas le bouton et pensez aux balises [code]Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur ![]() |
|
|
|
00
|
|
|
#17 |
|
Membre du Club
![]() Inscription : septembre 2006 Messages : 339 ![]() |
c'est pas au moment de l'affectation que l'erreur est générée..
en fait, lors de l'affectation, le typeset va forcer une argument non entier à zéro... du coup y a pas d'erreur générée.. je vois ou tu veux en venir, mais je ne crois pas que c'est ce qu'il me faut.. sous réserve que j'ai compris biensur... sinon, publicvoidmain... je ne comprends pas ce que tu dis.. je crois que tu t'es un peu égaré dans le sujet, non? et merci, je sais utiliser man |
|
|
00
|
|
|
#18 |
![]() ![]() Alain Ingénieur d'études décisionnel Inscription : mai 2002 Messages : 4 451 ![]() |
En effet, j'avais testé avec ksh qui est plus restrictif que bash
__________________
Modérateur Langage SQL N'oubliez pas le bouton et pensez aux balises [code]Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur ![]() |
|
|
00
|
|
|
#19 | ||
|
Membre éprouvé
![]() Ingénieur systèmes et réseaux Inscription : août 2007 Messages : 508 ![]() |
En effet, je me suis trompé et je m'en excuse.
Je croyais que l'option -n permettait de tester si un arg était un entier. Quand j'ai lu le man de bash ou man test, apparemment il y'a pas d'options qui permet de le tester. En fait , j'ai trouvé un autre moyen pour tester si un argument est un entier : Code :
J'espere que ca peut t'aider. |
||
|
00
|
Copyright © 2000-2012 - www.developpez.com