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 :

[KSH] Test si le fichier existe


Sujet :

Linux

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2005
    Messages : 43
    Points : 43
    Points
    43
    Par défaut [KSH] Test si le fichier existe
    Bonjour,

    J'essaye de faire un batch sous UNIX dans lequel je dois lancer un programme à condition qu'un fichier existe dans un rèpertoire prédéfini.

    J'ai essayé le code suivant mais ça marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    export trouve_file=`find ${MON_REPERTOIRE} -name "MON_FICHIER";echo $?`
    if [ $trouve_file eq 0 ]
    then
     traitement
    fi
    Merci de votre aide.

  2. #2
    Membre confirmé Avatar de KindPlayer
    Profil pro
    Inscrit en
    Février 2007
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 471
    Points : 477
    Points
    477
    Par défaut il y a plus simple
    Supposons que le nom de ton fichier est dans la variable file.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [[ -e $file ]] && traitement
    Regarde les tests dans les scripts shell ca pourra te reservir

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par KindPlayer Voir le message
    Supposons que le nom de ton fichier est dans la variable file.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [[ -e $file ]] && traitement
    Regarde les tests dans les scripts shell ca pourra te reservir
    L'option "-e" de test a été créée avec le bash. Elle n'est pas connue du Bourne Shell ni du Korn Shell. Mais c'est sympa quand-même d'avoir répondu

    Citation Envoyé par gentarik Voir le message
    Bonjour,

    J'essaye de faire un batch sous UNIX dans lequel je dois lancer un programme à condition qu'un fichier existe dans un rèpertoire prédéfini.

    J'ai essayé le code suivant mais ça marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    export trouve_file=`find ${MON_REPERTOIRE} -name "MON_FICHIER";echo $?`
    if [ $trouve_file eq 0 ]
    then
     traitement
    fi
    Merci de votre aide.
    Ton erreur est de croire que find renverra un exception s'il ne trouve pas alors que ce n'est pas le cas. find ne trouve pas mais il s'exécute correctement donc $? sera toujours à 0. Et accessoirement, inutile d'écrire des trucs de ce style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var=`echo $?`
    if test $var ...
    Puisque tu as déjà la variable à ta disposition, inutile de la faire afficher par un sous-processus echo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var=$?
    if test $var ...
    ou mieux, inutile de passer par une seconde variable
    Sinon tu aurais pu passer par le fait que si find ne trouve rien, il n'affiche rien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    res=`find ${MON_REPERTOIRE} -name "MON_FICHIER"`
    if [ -n "$res" ]
    then
     traitement
    fi
    Bon, tu as eu une idée intéressante qui montre que t'es doué et que tu progresseras vite en shell. Mais en fait il te manque juste un peu d'expérience car la solution la plus simple est la suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/bin/ksh
    ls "MON_FICHIER" 1>/dev/null 2>&1
    if test $? -eq 0
    then
        traitement
    fi
    Accessoirement, étant donné que "if" teste la validité de toute commande, on peut se passer de $?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/bin/ksh
    if ls "MON_FICHIER" 1>/dev/null 2>&1
    then
        traitement
    fi
    Et si ton traitement ne prend qu'une instruction, tu peux raccourcir le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #!/bin/ksh
    ls "MON_FICHIER" 1>/dev/null 2>&1 && traitement
    Regarde les cours de Shell Linux : http://linux.developpez.com/cours/

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 34
    Points : 41
    Points
    41
    Par défaut
    Bonjour
    Citation Envoyé par Sve@r Voir le message
    L'option "-e" de test a été créée avec le bash. Elle n'est pas connue du Bourne Shell ni du Korn Shell. Mais c'est sympa quand-même d'avoir répondu
    Faux, ça existe bien en ksh...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2005
    Messages : 43
    Points : 43
    Points
    43
    Par défaut
    Bravo c'est résolu

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2005
    Messages : 43
    Points : 43
    Points
    43
    Par défaut
    Merci Sve@r

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

Discussions similaires

  1. [SP-2010] Testes si un fichier existe dans une bibliothèque.
    Par stephbi dans le forum SharePoint
    Réponses: 1
    Dernier message: 18/11/2013, 09h15
  2. Problème Test si mon Fichier Access existe ou pas
    Par guapetonito dans le forum JDBC
    Réponses: 1
    Dernier message: 19/06/2012, 11h48
  3. test fichier existant dans WAR
    Par molesqualeux dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 11/03/2010, 18h27
  4. [AC-2007] test si fichier existe
    Par gwems dans le forum VBA Access
    Réponses: 6
    Dernier message: 15/05/2009, 14h10
  5. [VBA_E] Procedure de test de fichier existant
    Par zoumzoum59 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/01/2007, 20h20

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