Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/07/2007, 12h11   #1
Membre du Club
 
Inscription : juillet 2007
Messages : 172
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 172
Points : 40
Points : 40
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
coincoin22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2007, 12h43   #2
Rédacteur/Modérateur
 
Avatar de gorgonite
 
Homme Nicolas Vallée
Ingénieur Système
Inscription : décembre 2005
Messages : 9 774
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vallée
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Ingénieur Système
Secteur : Transports

Informations forums :
Inscription : décembre 2005
Messages : 9 774
Points : 14 303
Points : 14 303
Code :
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
gorgonite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2007, 13h57   #3
Membre du Club
 
Inscription : juillet 2007
Messages : 172
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 172
Points : 40
Points : 40
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 !!
coincoin22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2007, 14h02   #4
Rédacteur/Modérateur
 
Avatar de gorgonite
 
Homme Nicolas Vallée
Ingénieur Système
Inscription : décembre 2005
Messages : 9 774
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vallée
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Ingénieur Système
Secteur : Transports

Informations forums :
Inscription : décembre 2005
Messages : 9 774
Points : 14 303
Points : 14 303
essaies cela

Code :
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
gorgonite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2007, 14h17   #5
Membre du Club
 
Inscription : juillet 2007
Messages : 172
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 172
Points : 40
Points : 40
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.
coincoin22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2007, 14h47   #6
Membre du Club
 
Inscription : juillet 2007
Messages : 172
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 172
Points : 40
Points : 40
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
coincoin22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2007, 14h51   #7
Rédacteur/Modérateur
 
Avatar de gorgonite
 
Homme Nicolas Vallée
Ingénieur Système
Inscription : décembre 2005
Messages : 9 774
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vallée
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Ingénieur Système
Secteur : Transports

Informations forums :
Inscription : décembre 2005
Messages : 9 774
Points : 14 303
Points : 14 303
Code :
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
gorgonite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2007, 15h27   #8
Membre du Club
 
Inscription : juillet 2007
Messages : 172
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 172
Points : 40
Points : 40
On approche

Mais il me renvoit

Code :
sleep bad character in argument
décidemment...

Code :
Syntax error near unexpected token 'fi'
Qu'est ce que cela veut dire ??
coincoin22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2007, 15h35   #9
Rédacteur/Modérateur
 
Avatar de gorgonite
 
Homme Nicolas Vallée
Ingénieur Système
Inscription : décembre 2005
Messages : 9 774
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vallée
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Ingénieur Système
Secteur : Transports

Informations forums :
Inscription : décembre 2005
Messages : 9 774
Points : 14 303
Points : 14 303
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
gorgonite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2007, 15h38   #10
Membre du Club
 
Inscription : juillet 2007
Messages : 172
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 172
Points : 40
Points : 40
Je sais tres bien mais il ne l'accepte pas ....!

Voici mon code !

Code :
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à !!
coincoin22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2007, 15h49   #11
Rédacteur/Modérateur
 
Avatar de gorgonite
 
Homme Nicolas Vallée
Ingénieur Système
Inscription : décembre 2005
Messages : 9 774
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vallée
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Ingénieur Système
Secteur : Transports

Informations forums :
Inscription : décembre 2005
Messages : 9 774
Points : 14 303
Points : 14 303
pour la n-ième correction

voici mon fichier exemple...

Code :
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 :
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
gorgonite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2007, 15h52   #12
Membre chevronné
 
Avatar de f-k-z
 
Homme K-Z. F.
Ingénieur sécurité
Inscription : juin 2006
Messages : 393
Détails du profil
Informations personnelles :
Nom : Homme K-Z. F.
Âge : 27
Localisation : France, Var (Provence Alpes Côte d'Azur)

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

Informations forums :
Inscription : juin 2006
Messages : 393
Points : 675
Points : 675
Yop,
Code :
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.
f-k-z est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2007, 16h00   #13
Membre du Club
 
Inscription : juillet 2007
Messages : 172
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 172
Points : 40
Points : 40
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é !
coincoin22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2007, 16h05   #14
Rédacteur/Modérateur
 
Avatar de gorgonite
 
Homme Nicolas Vallée
Ingénieur Système
Inscription : décembre 2005
Messages : 9 774
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vallée
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Ingénieur Système
Secteur : Transports

Informations forums :
Inscription : décembre 2005
Messages : 9 774
Points : 14 303
Points : 14 303
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
gorgonite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2007, 16h10   #15
Membre chevronné
 
Avatar de f-k-z
 
Homme K-Z. F.
Ingénieur sécurité
Inscription : juin 2006
Messages : 393
Détails du profil
Informations personnelles :
Nom : Homme K-Z. F.
Âge : 27
Localisation : France, Var (Provence Alpes Côte d'Azur)

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

Informations forums :
Inscription : juin 2006
Messages : 393
Points : 675
Points : 675
Yop,
la ligne
Code :
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.
f-k-z est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2007, 16h14   #16
Membre du Club
 
Inscription : juillet 2007
Messages : 172
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 172
Points : 40
Points : 40
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 !
coincoin22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2007, 16h24   #17
Membre chevronné
 
Avatar de f-k-z
 
Homme K-Z. F.
Ingénieur sécurité
Inscription : juin 2006
Messages : 393
Détails du profil
Informations personnelles :
Nom : Homme K-Z. F.
Âge : 27
Localisation : France, Var (Provence Alpes Côte d'Azur)

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

Informations forums :
Inscription : juin 2006
Messages : 393
Points : 675
Points : 675
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 :
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.
f-k-z est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2007, 16h29   #18
Rédacteur/Modérateur
 
Avatar de gorgonite
 
Homme Nicolas Vallée
Ingénieur Système
Inscription : décembre 2005
Messages : 9 774
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vallée
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Ingénieur Système
Secteur : Transports

Informations forums :
Inscription : décembre 2005
Messages : 9 774
Points : 14 303
Points : 14 303
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
gorgonite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2007, 16h47   #19
Membre du Club
 
Inscription : juillet 2007
Messages : 172
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 172
Points : 40
Points : 40
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 :
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
coincoin22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2007, 17h18   #20
Membre chevronné
 
Avatar de f-k-z
 
Homme K-Z. F.
Ingénieur sécurité
Inscription : juin 2006
Messages : 393
Détails du profil
Informations personnelles :
Nom : Homme K-Z. F.
Âge : 27
Localisation : France, Var (Provence Alpes Côte d'Azur)

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

Informations forums :
Inscription : juin 2006
Messages : 393
Points : 675
Points : 675
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.
f-k-z est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h46.


 
 
 
 
Partenaires

Hébergement Web