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

Shell et commandes GNU Discussion :

[bash] Test Existence fichier depuis read


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 13
    Par défaut [bash] Test Existence fichier depuis read
    Bonjour,

    Probleme tout con : Je veux tester l'existence d'un fichier depuis une entree utilisateur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    read p
    if [[ -e $p ]] ; then
      ...
    fi
    Il trouve pas le fichier que je lui passe alors que celui-ci existe bien.
    Comme si il testait [[ -e "path/mon/fichier" ]] au lieu de [[ -e path/mon/fichier ]]

    Merci de votre aide!

  2. #2
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 13
    Par défaut
    Bon je le résous comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    read p
    file_path=${p/\~/$HOME}
    if [[ -e $file_path ]] ; then
    fi
    Je suis preneur s'il y a plus propre.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Décembre 2013
    Messages : 70
    Par défaut
    Bonjour,

    Je ne suis pas certain de comprendre ton problème...

    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
    $ touch fic
    $ read p
    fic
    $ if [[ -e $p ]]
    > then
    > echo "$p existe"
    > fi
    fic existe
    $ touch rep/fic
    $ read p
    rep/fic
    $ if [[ -e $p ]]
    > then
    > echo "$p existe"
    > fi
    rep/fic existe
    $
    Ça fonctionne bien comme attendu.

    Et [[ -e "path/mon/fichier" ]] et [[ -e path/mon/fichier ]], c'est pareil.

    Edit :
    Ah pardon !

    Le ~ n'est pas interprété dans read, il est pris littéralement.

  4. #4
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 347
    Par défaut
    Citation Envoyé par Taylor² Voir le message
    Bon je le résous comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    read p
    file_path=${p/\~/$HOME}
    if [[ -e $file_path ]] ; then
    fi
    Je suis preneur s'il y a plus propre.
    Ici, la résolution est juste pour un "~" isolé, par contre ça ne fonctionne pas pour "~user" qui représente le $HOME de user (si cet user existe).

    Et pour bash, "~+" c'est $PWD et "~-" c'est $OLDPWD.

    Et je ne parle pas des "~n" ou n représente le numéro d'entrée dans la dirstack (voir les commande dirs,pushd,popd)

  5. #5
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    Bonjour

    Je suis preneur s'il y a plus propre.
    Je ne sais pas si c'est plus propre, mais, à la première lecture, je ne comprends pas pourquoi tu invoques un test étendu. Un test simple aurait suffit.
    Ou même

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    les guillemets!
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Membre émérite Avatar de balkany
    Homme Profil pro
    Touriste
    Inscrit en
    Juillet 2017
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Touriste

    Informations forums :
    Inscription : Juillet 2017
    Messages : 348
    Par défaut
    Une manière de forcer le développement par bash :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [ -e "$(bash -c "echo $p")" ]; then

Discussions similaires

  1. test existence fichier
    Par NPortmann dans le forum SQL
    Réponses: 3
    Dernier message: 19/03/2008, 16h30
  2. Réponses: 8
    Dernier message: 01/08/2007, 15h38
  3. [XI] Test existance fichier
    Par dim07 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 07/03/2007, 10h17
  4. test existance Fichier
    Par ons dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 09/02/2007, 16h09
  5. debutante - test existence fichier
    Par coco21 dans le forum Débuter
    Réponses: 9
    Dernier message: 12/02/2006, 12h07

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