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] Tester si un dossier est vide


Sujet :

Shell et commandes GNU

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 266
    Points : 98
    Points
    98
    Par défaut [bash] Tester si un dossier est vide
    En fait je veux creer script qui fait ceci :

    vérifier si un dossier /toto est vide
    si il est vide quitter
    sinon continuer à vérifier !


    Merci... Je crois que je suis perdu totalement !!

    Coincoin22

  2. #2
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ls -a /toto | sed -e "/\.$/d" | wc -l
    regardes si le résultat est zéro...
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 266
    Points : 98
    Points
    98
    Par défaut
    merci mais comment récupérer cette valeur pour que lorsqu'elle est nulle, cela quitte ma commande... Si non nulle alors je reteste mon dossier...

    Merci, je sens que ça avance merci !!

  4. #4
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    essaies cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var=`ls -a /toto | sed -e "/\.$/d" | wc -l`
    if [ $var -lt 0 ]
    then
        exit 0
    fi

    pas eu le temps de tester... mais c'est l'idée
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 266
    Points : 98
    Points
    98
    Par défaut
    Non ça me mets erreur...

    J'ai récupérer la valeur

    var=$(ls -a /toto/ | sed -e "/\.$/d" | wc -l)

    Ensuite il faut un truc dans le genre mais je suis novice

    if $var=0
    then exit
    fi

    Est ce que il va récupérer la variable une nouvelle fois si elle est différente de zéro...
    Est ce que le test tourne en rond ?

    En fait je veux tester en boucle car je veux qu'il quitte le bash quand un serveur aura récupérer les fichier dans /toto...

    Merci. Je peux te donner plus d'explications si tu veux.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 266
    Points : 98
    Points
    98
    Par défaut
    J'ai un autre souci...

    var=$(ls -a /toto | sed -e "/\.$/d" | wc -l)
    if [ "$var" -eq "2" ];
    then echo "Bien vu"
    fi

    Le script me répond "integer expression expected"

    Un pb de variable ?? String ou autre ??

    Merci

  7. #7
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var=$(ls -a . | sed -e "/\.$/d" | wc -l)
    echo $var
    sleep 5
    if [ $var -eq 0 ]
    then
       exit
    fi

    testé et approuvé
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 266
    Points : 98
    Points
    98
    Par défaut
    On approche

    Mais il me renvoit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sleep bad character in argument
    décidemment...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Syntax error near unexpected token 'fi'
    Qu'est ce que cela veut dire ??

  9. #9
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    fi c'est pour déclarer la fin du if

    un peu comme do ... done


    je pense que tu devrais essayer de "prendre" un cours de bash... ça peut t'aider à mieux comprendre

    http://marcg.developpez.com/ksh/
    http://eric-sanchis.developpez.com/linux/shell/bash/
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 266
    Points : 98
    Points
    98
    Par défaut
    Je sais tres bien mais il ne l'accepte pas ....!

    Voici mon code !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var=$(ls -a /toto| sed -e "/\.$/d" | wc -l)
    echo $var
    if [ $var -eq 0 ]; then
    	exit
    fi
    Le FI est là !!

  11. #11
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    pour la n-ième correction

    voici mon fichier exemple...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var=$(ls -a . | sed -e "/\.$/d" | wc -l)
    echo $var
    if [ $var -eq 0 ]; then
    exit 0
    fi
     
    var=$(ls -a temp_ftp/ | sed -e "/\.$/d" | wc -l)
    echo $var
    if [ $var -eq 0 ]; then
    exit 1
    fi
    15 fichiers dans ~/temp
    0 fichiers dans ~/temp/temp_ftp

    voici ce que cela affiche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    gorgonite@GorgonMobile:~/temp$ bash test.sh ; echo $?
    15
    0
    1
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  12. #12
    Membre éprouvé
    Avatar de f-k-z
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Juin 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2006
    Messages : 403
    Points : 928
    Points
    928
    Par défaut
    Yop,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var=$(ls -a toto| sed -e "/\.$/d" | wc -l)
    echo $var
    if [ $var -eq 0 ]; then
    exit
    fi
    ce code passe très bien, j'ai testé sous ksh d'un AIX5.3 sans aucun soucis, aurais-tu par hasard fais un copier coller à partir de windows???
    Car tu as surement un petit problème avec tes retour chariots ^^
    @++

    F-k-z
    GNU/Linux c'est une question de VI ou de MORE.
    http://www.goodbye-microsoft.com
    "Linux is user friendly, its just very selective of its friends*", m'enfou, je suis son pote :p

    Un post vous est utile ou est constructif, ayez le réflexe du +1 pour le contributeur ( C'est gratuit et ça donne l'impression d'être utile :p )
    Le tag et la ne sont pas fait que pour le décor, pensez-y !
    R.I.P. F-k-z 13/06/2006 - 12/10/2011
    *Linux est convivial, il est juste très sélectifs pour ses amis.

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 266
    Points : 98
    Points
    98
    Par défaut
    Je suis désolé mais ça ne fonctionne pas...

    Je vais arrêter de t'embêter... Je vais aller voir sur un autre forum.

    J'ai toujours l'erreur Pb de type string ou autre...

    Si tu as des tuyaux n'hésite pas tout de même !

    Désolé !

  14. #14
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    quel shel utilises-tu ? quelle version ? quelle version de sed ?


    parce que là, ça devient louche


    donnes le résultat de l'exécution avec l'option -v
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  15. #15
    Membre éprouvé
    Avatar de f-k-z
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Juin 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2006
    Messages : 403
    Points : 928
    Points
    928
    Par défaut
    Yop,
    la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var=$(ls -a toto| sed -e "/\.$/d" | wc -l)
    te marque cette erreur quand tu l'executes seule ?
    et avec cellec-i
    @++

    F-k-z
    GNU/Linux c'est une question de VI ou de MORE.
    http://www.goodbye-microsoft.com
    "Linux is user friendly, its just very selective of its friends*", m'enfou, je suis son pote :p

    Un post vous est utile ou est constructif, ayez le réflexe du +1 pour le contributeur ( C'est gratuit et ça donne l'impression d'être utile :p )
    Le tag et la ne sont pas fait que pour le décor, pensez-y !
    R.I.P. F-k-z 13/06/2006 - 12/10/2011
    *Linux est convivial, il est juste très sélectifs pour ses amis.

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 266
    Points : 98
    Points
    98
    Par défaut
    version bash 2.05

    Ta commande m'affiche bien le nombre de fichier (2)
    c vrai que j'utilise windows et je teste mon bash sur une machine via telnet

    C ensuite que ça coince !

  17. #17
    Membre éprouvé
    Avatar de f-k-z
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Juin 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2006
    Messages : 403
    Points : 928
    Points
    928
    Par défaut
    Yop,
    comme tu édites sous windows, essaies d'ouvrir ton script sous unix, ou fait un simple
    et regarde s'il n'y a pas de caractéres génants qui sont apparus
    sinon essai de remplacer ma commande par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var=`ls -a toto/|wc -w`; var=$(($var - 2))
    Comme cela tu pourras aussi gérer les fichier cachés ^^
    @++

    F-k-z
    GNU/Linux c'est une question de VI ou de MORE.
    http://www.goodbye-microsoft.com
    "Linux is user friendly, its just very selective of its friends*", m'enfou, je suis son pote :p

    Un post vous est utile ou est constructif, ayez le réflexe du +1 pour le contributeur ( C'est gratuit et ça donne l'impression d'être utile :p )
    Le tag et la ne sont pas fait que pour le décor, pensez-y !
    R.I.P. F-k-z 13/06/2006 - 12/10/2011
    *Linux est convivial, il est juste très sélectifs pour ses amis.

  18. #18
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par f-k-z
    Comme cela tu pourras aussi gérer les fichier cachés ^^

    avec ma solution aussi... par ailleurs avec cela, que faire si il y a un espace dans le nom de fichiers
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 266
    Points : 98
    Points
    98
    Par défaut
    Merci... Je vais tester tout ça...

    J'ai converti mon code windows en unix je vais tester !

    C cool de m'aider !

    Merci

    CA MARCHE... JE TE REMERCIE VRAIMENT !

    Mais le test ne fait pas de boucle ! J'aimerai que tant qu'il n'est pas vide, le prog continue de tester ...

    Je t'embête encore... Désolé... C'est bon j'ai trouvé !! Merci encore pour tout !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var=$(ls -a /toto | sed -e "/\.$/d" | wc -l)
    echo $var
    while [ $var -ne 0 ]
    do 	
            var=$(ls -a /toto | sed -e "/\.$/d" | wc -l)
    	echo $var
    done
    Juste un truc quelle est la commande pour fermer ma fenetre bash définitivement... Merci

  20. #20
    Membre éprouvé
    Avatar de f-k-z
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Juin 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2006
    Messages : 403
    Points : 928
    Points
    928
    Par défaut
    Yop,
    avec exit?

    @Gorgonite: Heuuuuuuu, enfin, étant donné l'état des choses, ca lui permettait d'avoir une réponse Puis il a qu'a pas mettre d'espace dans un nom de fichier nan? copain??? :]]]]]]]]]]]]
    @+

    F-k-z
    GNU/Linux c'est une question de VI ou de MORE.
    http://www.goodbye-microsoft.com
    "Linux is user friendly, its just very selective of its friends*", m'enfou, je suis son pote :p

    Un post vous est utile ou est constructif, ayez le réflexe du +1 pour le contributeur ( C'est gratuit et ça donne l'impression d'être utile :p )
    Le tag et la ne sont pas fait que pour le décor, pensez-y !
    R.I.P. F-k-z 13/06/2006 - 12/10/2011
    *Linux est convivial, il est juste très sélectifs pour ses amis.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Tester si un dossier est vide ?
    Par brolon dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 30/01/2009, 16h49
  2. [langage] Comment tester si une chaine est vide
    Par |Bio dans le forum Langage
    Réponses: 4
    Dernier message: 04/05/2005, 15h05
  3. Comment tester si un repertoire est vide sous Linux
    Par chouchouappc dans le forum Linux
    Réponses: 3
    Dernier message: 24/02/2005, 12h03
  4. Tester si une table est vide
    Par rsc dans le forum SQL
    Réponses: 2
    Dernier message: 01/07/2004, 16h25
  5. [JDBC]tester si une table est vide
    Par zozolh2 dans le forum JDBC
    Réponses: 5
    Dernier message: 28/05/2004, 09h17

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