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

  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".

  7. #7
    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 zipe31 Voir le message
    Oui mais comme $1 n'est pas définie, la condition porte sur "$HOME\commun".
    J'éditais mon poste précédent lorsque tu répondais !

    A la limite au lieu de faire ce ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [ -d "${chemin}/${1:-vide}" ]
    Je peux faire cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if [ ! -z "$1" ] && [ -d "$chemin\$1" ]
    ? !

  8. #8
    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
    Ou juste tester l'existence du paramètre, la seconde condition étant inutile.

  9. #9
    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 zipe31 Voir le message
    Ou juste tester l'existence du paramètre, la seconde condition étant inutile.
    Effectivement mais alors si je rentre un fichier ou un répertoire en paramètre dans les deux cas j'aurais des informations moi je ne cherchais qu'a les avoir sur le répertoire.

    Au passage grâce à ta remarque j'ai pu observer que l'on pouvait faire un ls -t l d'un fichier ! Chose que j'ignorais !

  10. #10
    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
    Citation Envoyé par crodilus Voir le message
    Effectivement mais alors si je rentre un fichier ou un répertoire en paramètre dans les deux cas j'aurais des informations moi je ne cherchais qu'a les avoir sur le répertoire.
    Oups

    Désolé, je n'avais pas fait attention à la condition "!".
    Donc oui ton raisonnement est bon avec if [ ! -z "$1" ] && [ -d "$chemin\$1" ]

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 706
    Par défaut
    Bonjour,

    - * - = +
    => test -n "$1"

  12. #12
    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 zipe31 Voir le message
    Oups

    Désolé, je n'avais pas fait attention à la condition "!".
    Donc oui ton raisonnement est bon avec if [ ! -z "$1" ] && [ -d "$chemin\$1" ]
    Pas de problèmes !

    Merci pour ton aide !

  13. #13
    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 N_BaH Voir le message
    Bonjour,

    - * - = +
    => test -n "$1"
    Juste !

+ 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