Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[HS] - Script

20 réponses
Avatar
Nahliel Steinberg
Bonjour,

Je dois ecrire un script qui test si des fichiers sont vides ou pas.

(ça je vois comment faire le test, deplus j'en ai pas beaucoup que 8 à tester)


En suite ce script doit les copiers à un endroit mais seulement si il n'y en a aucun
qui est vide. si j'en ai au moins un de vide je ne fais rien.

Et là je seche.

--
Nahliel

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/20111102093752.GA14424@srvdebian.info-cr.fr

10 réponses

1 2
Avatar
Julien Valroff
Le mercredi 02 nov. 2011 à 10:37:52 (+0100 CET), Nahliel Steinberg a écrit :
Bonjour,

Je dois ecrire un script qui test si des fichiers sont vides ou pas.



Quel language ? Je présume en shell script d'après l'utilisation ?

(ça je vois comment faire le test, deplus j'en ai pas beaucoup que 8 à tester)



[ -s fichier ] && echo "Fichier non vide"
(man test)

En suite ce script doit les copiers à un endroit mais seulement si il n'y en a aucun
qui est vide. si j'en ai au moins un de vide je ne fais rien.



Il te suffit par exemple d'initialiser une variable à 0 en début de script,
incrémentée à chaque fois qu'un fichier vide est trouvé (en bouclant sur la
liste des fichiers). Si à la suite de la boucle la variable est > 0, alors
tu ne fais rien, sinon tu copies les fichiers.

Julien

--
.''`. Julien Valroff ~ ~
: :' : Debian Developer & Free software contributor
`. `'` http://www.kirya.net/
`- 4096R/ E1D8 5796 8214 4687 E416 948C 859F EF67 258E 26B1

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Grégory Bulot
Bonjour, Bonsoir,

Le Wed, 2 Nov 2011 10:37:52 +0100, Nahliel Steinberg, vous avez écrit :

Bonjour,

Je dois ecrire un script qui test si des fichiers sont vides ou pas.

(ça je vois comment faire le test, deplus j'en ai pas beaucoup que 8
à tester)


En suite ce script doit les copiers à un endroit mais seulement si il
n'y en a aucun qui est vide. si j'en ai au moins un de vide je ne
fais rien.

Et là je seche.




LesFichiers=""
[debut de ma boucle]
if [ -s $MonFichier ];
then
break ou exit 0
fi
LesFichiers=$LesFichiers" "$MonFichier
[fin de ma boucle]
#si on arrive ici c'est qu'il n'y a pas de fichiers vide
cp $LesFichiers MaDestination


mais je suis pas sur d'avoir bien compris




--
Cordialement
Grégory BULOT

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Nahliel Steinberg
Quel language ? Je présume en shell script d'après l'utilisation ?



Tu présume bien ;-)

[ -s fichier ] && echo "Fichier non vide"



Oui ça je sais faire mais pour un fichier

Il te suffit par exemple d'initialiser une variable à 0 en début de script,
incrémentée à chaque fois qu'un fichier vide est trouvé (en bouclant sur la
liste des fichiers). Si à la suite de la boucle la variable est > 0, alors
tu ne fais rien, sinon tu copies les fichiers.



Heuuuu.... ;-)


--
Nahliel

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Nahliel Steinberg
LesFichiers=""
[debut de ma boucle]
if [ -s $MonFichier ];
then
break ou exit 0
fi
LesFichiers=$LesFichiers" "$MonFichier
[fin de ma boucle]
#si on arrive ici c'est qu'il n'y a pas de fichiers vide
cp $LesFichiers MaDestination





Je dois lister 8 fichiers dans un repertoire, si au moins un fichier est vide je ne les copie pas.

Si je comprends bien il faudrait que j'écrive :


myfiles="toto.txt titi.txt tata.txt tonton.txt toto2.txt titi2.txt tata2.txt tonton2.txt"

if [ -s $fileresult ];

then

envoi mail car pas ok

fi

myfiles=$myfiles" "$filesresult



--
Nahliel

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Jean-Yves F. Barbier
On Wed, 2 Nov 2011 11:19:08 +0100
Nahliel Steinberg wrote:

myfiles="toto.txt titi.txt tata.txt tonton.txt toto2.txt titi2.txt tata2.txt tonton2.txt"
if [ -s $fileresult ]; then
envoi mail car pas ok
fi



en dehors de la boucle??

myfiles=$myfiles" "$filesresult



--
A free society is one where it is safe to be unpopular.
-- Adlai Stevenson

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
David Dumortier
Bonjour,

Le mer. nov. 02 2011 � 11:12:09 +0100, Nahliel Steinberg dit :
>Quel language ? Je présume en shell script d'après l'utilisation ?

Tu présume bien ;-)

>[ -s fichier ] && echo "Fichier non vide"

Oui ça je sais faire mais pour un fichier

>Il te suffit par exemple d'initialiser une variable à 0 en début de script,
>incrémentée à chaque fois qu'un fichier vide est trouvé (en bouclant sur la
>liste des fichiers). Si à la suite de la boucle la variable est > 0, alors
>tu ne fais rien, sinon tu copies les fichiers.

Heuuuu.... ;-)



Voir man test :
- -a qui est un et logique et -not qui est une negation logique
- -o qui est un ou logique

--
Nahliel



--
David Dumortier

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Nahliel Steinberg
Le 02/11/11 at 11:33, Jean-Yves F. Barbier a ecrit:
On Wed, 2 Nov 2011 11:19:08 +0100
Nahliel Steinberg wrote:

myfiles="toto.txt titi.txt tata.txt tonton.txt toto2.txt titi2.txt tata2.txt tonton2.txt"
if [ -s $fileresult ]; then
envoi mail car pas ok
fi



en dehors de la boucle??

myfiles=$myfiles" "$filesresult





Oui c'est ce que m'à indiqué Gregory dans son exemple.

--
Nahliel

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Grégory Bulot
Bonjour, Bonsoir,

Je reprends , en modifiant
(j'ai pas optimisé la condition pour lisibilité sinon c'est plus court
avec :
[ -s "fileresult" ] && echo "fichier pas vide" || echo "fichier
vide"
)



#!/bin/bash
LesFichiers=""
myfiles="toto.txt titi.txt tata.txt tonton.txt toto2.txt titi2.txt
tata2.txt tonton2.txt"
for $fileresult in $myfiles
#si tout se trouve dans le même répertoire :
#for $fileresult in [MonRepertoireSource]/*
do
if [ -s $MonFichier ];
then
echo "Au moins un fichier à une taille null" |
mail -s "Compte rendu de traitement."
exit 0 #0 pour éviter à cron d'envoyer son message d'erreur
standard
fi
LesFichiers=$LesFichiers" "$MonFichier
done
#si on arrive ici c'est qu'il n'y a pas de fichiers vide
cp $LesFichiers [MonRépertoireDeDestination]

--
Cordialement
Grégory BULOT

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Grégory Bulot
Bonjour, Bonsoir,

Le Wed, 2 Nov 2011 11:44:00 +0100, Grégory Bulot, vous avez écrit :

MonFichier



s%/MonFichier/fileresult/g

--
Cordialement
Grégory BULOT

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Nahliel Steinberg
Merci beaucoup pour ton aide Gregory.

J'ai donc réecrit le script en suivant test conseils, mais j'ai cette erreur

./testficvide.sh: line 10: `$FILESRESULT': not a valid identifier
on peut copier les fichiers



Voici ce que j'ai réecrit propre en suivant tes derniers mails.



myfiles="toto.txt titi.txt tata.txt tonton.txt toto2.txt titi2.txt"
for $FILESRESULT in [/app/crunch/temp]/*
do
if [ -s $FILESRESULT ];
then
echo "Au moins un fichier à une taille null" |
mail -s "Compte rendu de traitement."
exit 0 #0 pour éviter à cron d'envoyer son message d'erreur
standard

fi
MYFILES=$MYFILES" "$FILESRESULT
done

echo "on peut copier les fichiers"

(j'ai mis un echo pour ne pas faire la copie tout de suite)





--
Nahliel

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
1 2