[shell] Fichier vide ou non (avec entete )

Fermé
nouabi Messages postés 143 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 16 juillet 2010 - 12 juil. 2007 à 12:51
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 - 12 juil. 2007 à 15:57
Bonjour,

Dans un script shell je voudrais tester si un fichier 'mail' est vide ou non sachant que le test [ -s /fichier ] ne marche pas (n'est jamais vide ce qui est faut)

Comment pourrais je faire cela ?

Je pensai fair, grâce a une commande, ouvrir le fichier, rentrer le contenu dans une variable puis testé la variable ?
non ?
Merci
A voir également:

4 réponses

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
12 juil. 2007 à 14:02
Un fichier vide est un fichier dont la taille est zéro. C'est bien test -s !
Que veux-tu tester ? Si un nouveau mail est arrivé ?
Pour placer le fichier dans une variable:
VAR=`cat /fichier`
0
nouabi Messages postés 143 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 16 juillet 2010 8
12 juil. 2007 à 14:59
Le probleme c'est que mon fichier vide fait toujour 1 octect.
Du coup, le test -s est toujour vrai !!

Comment peut on ouvrir un fichier en shell et comment peut ton copié la totalité de son contenu dans une variable (que nous testerons par la suite).

Merci d'avance
0
nouabi Messages postés 143 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 16 juillet 2010 8
12 juil. 2007 à 15:28
En fait je veu alle cherche un fichier texte dans un serveur ftp (local : a l'arrive ), puis le renvoyer par mail dès qu'il arrive. Je fai tourner le script a l'aide de cron mais il m'envoie des mail vide !!!

Je veu arrete ca ...
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
12 juil. 2007 à 15:57
Pour placer le fichier dans une variable:
VAR=`cat /fichier`

pour que cron n'envoie pas de mails vides il faut rediriger toutes sorties: crontab :
..................... > /dev/null ou /path/cronlog 2>&1
0