Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications
Applications Questions sur l'utilisation d'applications, du shell, et des interfaces graphiques (KDE, Gnome, XFCE... )
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/11/2010, 14h07   #1
Invité de passage
 
Francois
Inscription : novembre 2010
Messages : 16
Détails du profil
Informations personnelles :
Nom : Francois

Informations forums :
Inscription : novembre 2010
Messages : 16
Points : 1
Points : 1
Par défaut Boucle de prevention d`erreur

Bonjour a tous,

Je suis étudiant en informatique et je débute dans le monde Linux. Je suis suppose insérer ce code :

Code :
1
2
3
4
case $a in
    [0-9]*) ;;
    *) echo "Arguments must be numbers.">&2; exit 1;;
esac
dans ce code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/sh
 
sum=0
if [ $4 == 0 ]
then
        echo "Usage: sum <number> [<number>...]"
        exit 1
fi
 
for a in $*
do
    sum=`expr $sum + $a`
done
 
 
 
echo "$sum"
exit 0
Est-ce que quelqu'un peut m'expliquer le déroulement du premier code et me donner des pistes quant a son insertion dans le deuxième ?

Merci d'avance !
Necco100 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 14h35   #2
Membre Expert
 
Avatar de becket
 
Frédéric Brugmans
Informaticien multitâche
Inscription : février 2005
Messages : 661
Détails du profil
Informations personnelles :
Nom : Frédéric Brugmans

Informations professionnelles :
Activité : Informaticien multitâche

Informations forums :
Inscription : février 2005
Messages : 661
Points : 1 196
Points : 1 196
C'est un switch...case classique qui vérifie la validité d'une variable ( $a )
becket est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/11/2010, 16h16   #3
Membre Expert
 
Homme
Ingénieur développement logiciels
Inscription : octobre 2008
Messages : 1 375
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : octobre 2008
Messages : 1 375
Points : 2 034
Points : 2 034
Et d'ailleurs, soit le test est faux, soit le message est faux, car le test ne fait pas ce que dit le message. Le test vérifie que $a commence par un chiffre.
matafan est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/11/2010, 16h42   #4
Invité de passage
 
Francois
Inscription : novembre 2010
Messages : 16
Détails du profil
Informations personnelles :
Nom : Francois

Informations forums :
Inscription : novembre 2010
Messages : 16
Points : 1
Points : 1
ok, merci pour votre aide. J'ai une autre question, j'ai une boucle for du type : for a in $*
et j'aimerai sauter un argument sur deux, est-ce que c'est possible ?

J'ai aussi essayer ça pour sauter un argument : $(a+1) mais ça n'a pas marché ...
Necco100 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 17h39   #5
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 528
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 528
Points : 7 731
Points : 7 731
deuxiemement la méthode est mauvaise de base !

l'ordre logique des choses :
0 = vérifier qu'on a bien le nombre d'arguments attendus
1 = charger les variables
2 = vérifier le type de chaque variables
3 = si c'est bon alors faire le switch...case

la seule exception à ça est les switch...cas sur une variable qui peut etre de n'importe quel type alpha/num/alphanum etc..
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 30/11/2010, 17h44   #6
Membre Expert
 
Avatar de becket
 
Frédéric Brugmans
Informaticien multitâche
Inscription : février 2005
Messages : 661
Détails du profil
Informations personnelles :
Nom : Frédéric Brugmans

Informations professionnelles :
Activité : Informaticien multitâche

Informations forums :
Inscription : février 2005
Messages : 661
Points : 1 196
Points : 1 196
Tu ne peux qu’exceptionnellement faire l'assomption que les paramètres passés a ta fonction seront bons.

Tu dois prendre tous les paramètres et passer d'un a l'autre avec un shift pour "comprendre" les paramètres
becket est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h35.


 
 
 
 
Partenaires

Hébergement Web