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 :

Développement de chemins


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 345
    Par défaut Développement de chemins
    Bonjour,

    Je cherche si un répertoire contient des fichiers d'un certain type
    J'ai une variable liste qui contient le nom d'un répertoire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    verif_file(){
    echo $#
    	[ -f "$1" ]
    }
     
    verif_file "$liste"*.log
    [ $? -eq 1 ] && echo pasfile || echo c\'est bon
     
    liste="$liste"*.log
    verif_file "$liste"
    [ $? -eq 1 ] && echo pasfile || echo c\'est bon
    Dans le premier cas, j'obtient bien tous mes fichiers dans $1..$n
    Dans le second cas, je n'obtient que ma variable liste qui n'est pas le nom d'un fichier.
    Y a t'il moyen d'obtenir un développement de chemins a partir d'une variable?
    Merci
    ctac

  2. #2
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 365
    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 365
    Par défaut
    Bonjour,

    Comprends pas trop ce que tu veux faire, mais si tu veux obtenir le même résultat que ton premier cas, il ne faut pas mettre les guillemets autout de ta variable lors de l'appel de ta fonction, donc pour la ligne 11, tu dois écrire:
    au lieu de
    ou alors la ligne 10 doit être:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    liste=$(echo "$liste"*.log)
    mais la ligne 11 doit toujours être sans guillemet car sinon ta fonction considérera que tu n'as qu'un seul paramètre ($1) qui porte la liste de tous les fichiers.

    Et c'est pour cette raison que l'on évite de le faire de cette façon car si un de tes nom de fichier possède un espace, le passage à ta fonction scindera en 2 paramètres ce nom de fichier.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 666
    Par défaut
    vous énervez pas, de toute façon test ne prend qu'un seul argument.
    donc, l'utilité d'une liste...
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 365
    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 365
    Par défaut
    Pour l'instant sa question porte uniquement sur le passage d'une liste en argument.

    Et même, cela peut-être le premier argument qui est un nom de fichier tronqué

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 666
    Par défaut
    bon, ben, une liste, ça se met dans une liste :
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    liste=( lm_1 lm_2 lm_n )
    le développement de chemin s'y fait apparemment sans problème, même à partir d'une variable.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 345
    Par défaut
    La fonction verif_file permet de savoir si le répertoire contient un ou des fichiers de type .log.
    je test sur $1 car s'il y a des fichiers $1 en est un sinon $1 = répertoire/*.log qui n'est pas un fichier.

    J'ai essayé a peu prés toutes les combinaisons sans résultat.
    le répertoire s'appelle Nouveau dossier et comporte 4 fichiers log 1.log, ..., log 4.log
    Avec des espaces dans les noms du répertoire et des fichiers.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    verif_file(){
    echo $#
    echo $1
    echo $*
    	[ -f "$1" ]
    }
    verif_file "$liste"*.log
    [ $? -eq 1 ] && echo pasfile || echo c\'est bon
    liste=$(echo "$liste"*.log)
    verif_file $liste
    [ $? -eq 1 ] && echo pasfile || echo c\'est bon
    J'obtiens ça en sortie.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    4
    Nouveau dossier/log 1.log
    Nouveau dossier/log 1.log Nouveau dossier/log 2.log Nouveau dossier/log 3.log Nouveau dossier/log 4.log
    c'est bon
    12
    Nouveau
    Nouveau dossier/log 1.log Nouveau dossier/log 2.log Nouveau dossier/log 3.log Nouveau dossier/log 4.log
    pasfile
    J'essaye d'obtenir c'est bon en passant par une variable.
    Cordialement.
    ctac

Discussions similaires

  1. [ksh] développer un chemin relatif
    Par tiresias54 dans le forum Sécurité
    Réponses: 2
    Dernier message: 04/03/2012, 19h55
  2. Chemin initiatique pour développer en silverlight4
    Par CUCARACHA dans le forum Silverlight
    Réponses: 6
    Dernier message: 23/09/2010, 23h13
  3. Comment Développer en équipe ?
    Par christ_mallet dans le forum Débats sur le développement - Le Best Of
    Réponses: 45
    Dernier message: 19/11/2007, 00h15
  4. Algorithme de recherche de chemin
    Par amelie gaya dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 09/06/2002, 15h29
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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