Bonsoir,
j'aimerais savoir ce que signifie ce code:
Si quelqu'un peut me renseigner, merci!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 erreur=`expr $?`
Bonsoir,
j'aimerais savoir ce que signifie ce code:
Si quelqu'un peut me renseigner, merci!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 erreur=`expr $?`
A vrai dire, je ne vois pas bien pourquoi il y a des backquotes ni un expr ...
me paraîtrait suffisant
Code : Sélectionner tout - Visualiser dans une fenêtre à part erreur=$?
Pour ce code :$? contient le code de retour (d'erreur éventuelle) de l'opération ou instruction précédente.
Code : Sélectionner tout - Visualiser dans une fenêtre à part erreur=`expr $?`
expr EXPRESSION affiche le résultat de l'expression sur la sortie standard.
Les backticks `` prennent la sortie standard de la commande qu'elles encadrent pour la fournir comme une chaine au traitement en cours : l'affectation à la variable erreur.
C'est pourquoi il me paraît bizarre de passer par une étape de plus avec expr et ``, plutôt que de transférer le contenu d'une variable dans une autre.
Pareil
C'est allourdir le code que de rajouter expr...
Merci pour toutes ces explications.
Je vais essayer de voir pourquoi il y y a expr dans le code.
Si j'ai par exemple une erreur=1, cela correspond il à un type d'erreur bien précis?
Tout dépend du programme qui retourne cette erreur. Rien n'est vraiment standardisé sur ce point. Il faut regarder la doc du programme qui retourne l'erreur
Il n'y a pas de couments qui accompagnent le code;
Voici le code abrégé:
Donc quand j'execute ce code, tout se passe bien sauf que j'ai une erreur ORACLE avec le script.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 if [ $# != 3 ] then echo "ERREUR : Nombre de parametres incorrect" >> $ERREUR exit 22 fi if [ -f "$rep/$1_cd$2.$3" ] then if [ -f "$LOGS/$1_cd$2.BAD" ] then rm $LOGS/$1_cd$2.BAD fi if [ -f "$LOGS/$1_cd$2.DISCARD" ] then rm $LOGS/$1_cd$2.DISCARD fi echo "LOAD DATA INFILE '$rep/$1_cd$2.$3' STREAM BADFILE '$LOGS/$1_cd$2.BAD' DISCARDFILE '$LOGS/$1_cd$2.DISCARD' APPEND INTO TABLE NOMTABLE (VAL1 POSITION(1:11), VAL2 POSITION(22:56), DATE_SAISIE POSITION(13:20) DATE \"yyyymmdd\", VAL3 POSITION(58:62), > $rep/Chargement.ctl sqlload $base $rep/Chargement.ctl log=$LOGS/$1_cd$2.LOG erreur=`expr $?` if test "$erreur" -ne 0 then echo "La procedure de chargement (SQLLOADER) du fichier $1_cd$2 a echouee!!!!!!" >> $E_MAIL fi if [ -f "$LOGS/$1_cd$2.BAD" ] then echo "ATTENTION: un fichier $1_cd$2.BAD existe!!!!!!" exit 999 fi if [ -f "$LOGS/$1_cd$2.DISCARD" ] then echo "ATTENTION: un fichier $1_cd$2.DISCARD existe!!!!!!" else erreur=`expr $?` if test "$erreur" -ne 0 then echo " ERREUR ORACLE> $erreur avec le script " fi fi else echo " le fichier n'existe pas" >> $ERREUR exit 2 fi exit 0
Je n'arrive pas à comprendre si c'est dans le script qu'il y a une erreur ou autre part...
Je ne comprends pas, j'ai enlevé le code au fur et à mesure jusqu'à ne garder que le if concerné pour voir d'où pouvait venir l'erreur et j'ai toujours une erreur...
Et quand j'initialise la varible erreur à 0 juste avant le teste, là il met met 0 erreur.
Quand je mets $? cela me met la valeur 0 alors que quand je mets erreur = $? et que j'affiche la valeur de erreur, cela me met 1.
Pourquoi?
Mais si je ne mets pas le expr, j'ai toujours l'erreur.Envoyé par MarcG
SANS espace entre rien !.....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 erreur=$?
ou en ksh et bash
et la y a des espaces entre les mot clefs (( et ))
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 (( erreur = $? ))
ok merci!
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager