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 :

Pourquoi m'affiche-t-il un répertoire o_0 ?


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2011
    Messages : 76
    Par défaut Pourquoi m'affiche-t-il un répertoire o_0 ?
    Salut à toutes et à tous,

    J’aimerais savoir pourquoi lorsque je rentre aucun paramètre à ce bash

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    chemin=$HOME/commun
     
    if [ -d "$chemin/$1" ]
        then
            ls -l "$chemin/$1"
    fi
    Celui-ci me fait quand même un ls -l de commun ? !

    Amicalement crodilus.

  2. #2
    Modérateur
    Avatar de paissad
    Homme Profil pro
    Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Inscrit en
    Avril 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 043
    Par défaut
    Bonjour,
    lorsque tu n'entres aucun paramètre, alors la variable chemin vaut $HOME/commun tout simplement
    et je parie que $HOME/commun existe , donc ça te fait un ls -l $HOME/commun car $1 est vide.
    Cordialement,
    Nous n'héritons pas de la terre de nos parents, nous l'empruntons à nos enfants.
    Le chat du site est aussi ici pour aider. Ne pas hésiter à visiter !

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2011
    Messages : 76
    Par défaut
    Citation Envoyé par paissad Voir le message
    Bonjour,
    lorsque tu n'entres aucun paramètre, alors la variable chemin vaut $HOME/commun tout simplement
    et je parie que $HOME/commun existe , donc ça te fait un ls -l $HOME/commun car $1 est vide.
    Cordialement,
    Je sais que la variable chemin vaut $HOME/commun car je l'ai définie en tant que telle au début de mon bash.

    Effectivement $HOME/commun existe

    Mais pourquoi si $1 n'existe pas il me fait le ls -l de $chemin ? Ne devrait-il pas sauter l'instruction et ne rien afficher ? Car la condition porte sur $1 et non sur $chemin ? !

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Mais pourquoi si $1 n'existe pas il me fait le ls -l de $chemin ?
    Parce que $chemin existe.

    Ne devrait-il pas sauter l'instruction et ne rien afficher ?
    Non vu que la condition est vraie.

    Car la condition porte sur $1 et non sur $chemin ? !
    Non, la condition porte sur l'existence du répertoire "$HOME/commun".

    Pour palier le fait qu'une variable ne soit pas initialisée, il faut utiliser le remplacement des paramètres

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if [ -d "${chemin}/${1:-vide}" ]
    Si $1 est vide ou non initialisée, elle vaudra "vide" et de ce fait la condition sera fausse.

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2011
    Messages : 76
    Par défaut
    La condition ne port-elle pas sur "$chemin\$1" donc sur $HOME\commun\$1 ?

    Si $1 n'existe pas il va voir sur la variable précédente ?

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Oui mais comme $1 n'est pas définie, la condition porte sur "$HOME\commun".

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

Discussions similaires

  1. Treeview, afficher par défaut le répertoire utilisateur
    Par PDR dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/09/2008, 17h04
  2. Afficher le nom du répertoire parent
    Par simono dans le forum Langage
    Réponses: 2
    Dernier message: 03/04/2008, 18h42
  3. Réponses: 1
    Dernier message: 01/10/2007, 18h32
  4. Réponses: 17
    Dernier message: 19/07/2007, 09h38
  5. Réponses: 23
    Dernier message: 23/05/2006, 17h52

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