IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Test qui ne se fait pas


Sujet :

Linux

  1. #1
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 867
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 867
    Points : 4 873
    Points
    4 873
    Par défaut Test qui ne se fait pas
    Salut

    J'étais persuadé que mon script était exempt de bugs, que nenni !
    Je me suis rendu compte de ce petit cas. Soit les lignes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if [ $VERBOSE -eq 1 ]
    	then
    		echo "`date +"%d/%m/%Y-%H:%M:%S"` : $1 in dump"
    		svnadmin dump $1 > $DUMP
    	else
    		svnadmin dump $1 > $DUMP 2>&1
    	fi
    	RETURN=$?
    	SIZE=`du $DUMP | cut -f1`
    	if [ $RETURN -eq 0 ]
    Le fait est que quelque soit la valeur de $RETURN, le script le voit comme toujours égal à 0. Ce qui fausse bien entendu le test en dernière ligne.
    Voyez-vous où est mon erreur ?

    Merci d'avance de vos réponses.

    @++

  2. #2
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    As tu essayé d'afficher ton $?

    Si ça se trouve il a tout le temps la même valeur.
    Peut être qu'il prend la valeur de retour de ton if...fi ?

    Je te propose de mettre ton RETURN= ... dans le if, c'est à dire, de le mettre deux fois (une fois dans le if, une fois dans l'else).

  3. #3
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 867
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 867
    Points : 4 873
    Points
    4 873
    Par défaut
    Hello Ggnore

    J'ai mis mon RETURN=$? dans mes blocs if et else. Malheureusement, l'effet est le même. Le plus rigolo, c'est que $RETURN change de valeur une fois sorti du bloc if-else.

    @++

  4. #4
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Peut être que la variable de nom RETURN est spéciale. Tu as essayé de la renommer ?

  5. #5
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 867
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 867
    Points : 4 873
    Points
    4 873
    Par défaut
    Non, hélas, quand je change RETURN en RETOUR, l'effet est le même
    Merci en tout cas de ton aide.

    @++

  6. #6
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Voilà un source qui synthétise ton problème.
    Effectivement c'est bizarre.

    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
    #!/bin/sh
    retour=0
    if [ $1 = "a" ]
            then
            ls -l
            echo ">>>"$?
            retour=$?
    else
            azfzefz
            echo ">>>"$?
            retour=$?
    fi
     
    echo ">>>$?<<<"
    echo $retour
    Voici un lien en français concernant les codes retour en script shell.
    http://okki666.free.fr/docmaster/articles/linux131.html

  7. #7
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 867
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 867
    Points : 4 873
    Points
    4 873
    Par défaut
    Je ne te le fais pas dire !
    Apparemment, pour bash, 1=0 !

    @++

  8. #8
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Citation Envoyé par GLDavid
    Je ne te le fais pas dire !
    Apparemment, pour bash, 1=0 !

    @++
    Chuis pas d'accord, c'est $retour qui perd sa valeur à la sortie du if comme tu l'as dit toi même.

  9. #9
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 867
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 867
    Points : 4 873
    Points
    4 873
    Par défaut
    Considères le code suivant :
    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
     
    if [ $VERBOSE -eq 1 ]
    	then
    		echo "`date +"%d/%m/%Y-%H:%M:%S"` : $1 in dump"
    		svnadmin dump $1 > $DUMP
    		RETOUR=$?
    		echo ">>>$RETOUR<<<" 
    	else
    		svnadmin dump $1 > $DUMP 2>&1
    		RETOUR=$?
    		echo ">>>$RETOUR<<<"
    	fi
    	SIZE=`du $DUMP | cut -f1`
    	echo ">>>$RETOUR<<<"
    	if [ $RETOUR -eq 0 ]
    Je m'arrange pour que svnadmin dump ne marche pas. Le code de retour est de 1 et la valeur $RETOUR est toujours de 1 à chaque echo.
    Bizarre, non ?

  10. #10
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Normalement
    • le code "ça s'est bien passé", c'est 0
      le code "arg ça va pas", c'est différent de 0


    donc je vois pas de problème

    nouveau source :
    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
     
    #!/bin/sh
    retour=0
    if [ $1 = "a" ]
    then
            ls -l
    else
            azfzefz
    fi
    retour=$?
     
    echo ">>>$retour<<<"
    ls -l
     
    echo ">>>$retour<<<"
    Et là, je ne vois plus de problème.
    Les retours de week end prolongé ça n'a pas l'air de me réussir

  11. #11
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 867
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 867
    Points : 4 873
    Points
    4 873
    Par défaut
    Ok, j'ai trouvé !
    Le problème venait de la suite du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if [ $RETOUR -eq 0 ]
    echo "`date +"%d/%m/%Y-%H:%M:%S"` : svndump successed." >> $LOG
    then
    Il aurait fallu écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if [ $RETOUR -eq 0 ]
    then
    echo "`date +"%d/%m/%Y-%H:%M:%S"` : svndump successed." >> $LOG
    Merci encore à toi de ton soutien !

    @++

  12. #12
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Citation Envoyé par GLDavid
    Ok, j'ai trouvé !
    Le problème venait de la suite du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if [ $RETOUR -eq 0 ]
    echo "`date +"%d/%m/%Y-%H:%M:%S"` : svndump successed." >> $LOG
    then
    Il aurait fallu écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if [ $RETOUR -eq 0 ]
    then
    echo "`date +"%d/%m/%Y-%H:%M:%S"` : svndump successed." >> $LOG
    Merci encore à toi de ton soutien !

    @++
    Pile la ligne juste après le code que tu donnes ...

    J'avais pas beaucoup de chances de trouver

  13. #13
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 867
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 867
    Points : 4 873
    Points
    4 873
    Par défaut
    Exact,
    Le pire, c'est que j'étais sûr de l'écriture de mes lignes.
    Bon, comme quoi les scripts shell sont très permissifs (trop !).

    @++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Mail] Envoi d'e-mail qui ne se fait pas
    Par sam01 dans le forum Langage
    Réponses: 3
    Dernier message: 26/07/2007, 10h41
  2. rsync : sauvegarde incrementale qui ne se fait pas
    Par nixonne dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 22/07/2007, 12h11
  3. [Tableaux] création de tableau qui ne se fait pas
    Par mussara dans le forum Langage
    Réponses: 2
    Dernier message: 01/11/2006, 21h44
  4. Serveur Xorg sur debian testing qui ne se lance pas
    Par Cyrius dans le forum Applications et environnements graphiques
    Réponses: 7
    Dernier message: 01/01/2006, 23h25
  5. Pb de selection qui ne se fait pas
    Par Stef.proxi dans le forum Langage SQL
    Réponses: 4
    Dernier message: 06/08/2004, 10h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo