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 07/02/2008, 01h09   #1
Candidat au titre de Membre du Club
 
Développeur Web
Inscription : janvier 2008
Messages : 38
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2008
Messages : 38
Points : 12
Points : 12
Envoyer un message via MSN à donbrico
Par défaut tester la taille d'un fichier TXT

Bonsoir à tous,
je n'arrive pas sous bash à tester la valeur d'un fichier :
Je veux faire en sorte de recevoir un mail quand le fichier de logs n'est pas vide uniquement.
Voici le code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
nb=0
result=0
 
for nb in $(awk 'END {print NR}' ./message1.txt )
do
    echo $nb
done
 
result=$nb;
 
if  $(($result >0))
then
        echo "Fichier Non vide !!"
else
        echo "Vide"
fi;
J'ai récupéré ce code sur un forum et je l'ai légèrement modifié, voici le message d'erreur que j'ai en retour :

Code :
1
2
line 11: 1: command not found
Vide
Quelqu'un aurait-il une idée sur ce qui ne va pas ?

D'avance merci.
donbrico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2008, 07h07   #2
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 546
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 546
Points : 7 779
Points : 7 779
ne fais pas d'appel à un programme externe pour ça.....
ça bouffe de la ressource et en plus c'est un risque d'erreur de plus
utilises les fonctions du shell
Code :
if [ -s fichier ] ; then echo "non vide" ; else echo "vide" ; fi
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2008, 11h10   #3
Membre régulier
 
Inscription : avril 2003
Messages : 131
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 131
Points : 72
Points : 72
Salut, une autre solution:

Code :
$ if [ "x`cat file.txt | wc -l`" != "x0" ]; then echo "file not empty !"; fi
DjinnS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2008, 12h07   #4
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 546
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 546
Points : 7 779
Points : 7 779
Citation:
Envoyé par DjinnS Voir le message
Salut, une autre solution:

Code :
$ if [ "x`cat file.txt | wc -l`" != "x0" ]; then echo "file not empty !"; fi
mais tu fait aussi appel à une commande externe (et même 2 en plus)
c'est lourd... aussi lourd qu'un awk presque....
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2008, 14h58   #5
Membre régulier
 
Inscription : avril 2003
Messages : 131
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 131
Points : 72
Points : 72
Ce n'est pas la méthode la plus simple certe.

Personnellement, quand tes machines sont toutes des Dual Core ou des Quad Core, c'est pas un appel à cat et wc qui vont changer grand chose.

Ensuite, tout dépend de la taille des fichiers.

Je souhaitais juste donner une alternative à ta commande (qui marche parfaitement) et qui en plus, permet de faire tout un tas de tes avec la petite technique du "x".
DjinnS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2008, 16h05   #6
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 546
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 546
Points : 7 779
Points : 7 779
oui c'est vrai .... je reagi souvent en professinnel... au lieu de penser utilisateur ....
j'ai plus l'habitude de voir 1000-1500 process en meme temps sur une machine que 200 ou 300 comme a la maison..
ou la oui les perfs on s'en tape bien
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2008, 21h58   #7
Candidat au titre de Membre du Club
 
Développeur Web
Inscription : janvier 2008
Messages : 38
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2008
Messages : 38
Points : 12
Points : 12
Envoyer un message via MSN à donbrico
Par défaut Merci à tous ça marche parfaitement

Bonsoir les gars,
Merci pour votre aide, vos solutions marchent parfaitement, je n'ai pas eu le temps de répondre plus tôt, encore merci pour tout.
donbrico 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 18h55.


 
 
 
 
Partenaires

Hébergement Web