Vérifier l'existence d'un fichier

Fermé
Arun - 19 mars 2009 à 00:43
 Arun - 19 mars 2009 à 21:11
Bonjour,
je suis entrain d'ecrire un script permettant de vérifier l'existance d'un fichier.
disant que je dispose de 2 fichiers : fichier1 et fichier2 et d'un fichier test.sh (contenant le script)

test.sh contient
#!/bin/sh

if [ $# -eq 0 ]; then
echo "'basename $0': missing arguments." >&2
echo "usage: 'basename $0' file ..." >&2
exit -1
fi



je lance la commande par :
$ sh test.sh fichier1 fichier2

le programme vérifie bien que le nombre d'arguement est bien supérieur à 0.
Cependant je voudrais également qu'il vérifie que fichier1 et fichier2 existent.


par exemple, si je lance la commande par :
$ sh test.sh fichier1 fichier3 fichier 4

Il faut que le programme me dit que fichier3 et fichier4 n'existe pas.

Auriez-vous une idée du script que je peux écrire pour que cette vérification soit faite.

Merci
A voir également:

4 réponses

x11r6 Messages postés 353 Date d'inscription jeudi 13 mars 2008 Statut Membre Dernière intervention 7 mars 2017 59
19 mars 2009 à 00:45
bonsoir
test -f lefichier
cordialement
0
HostOfSeraphim Messages postés 6750 Date d'inscription jeudi 2 février 2006 Statut Contributeur Dernière intervention 31 juillet 2016 1 608
19 mars 2009 à 00:47
Un petit indice pour tester l'existence d'un fichier :

if [ -e $fichier ] then...

0
je n'arrive pas à voit ta réponse HostOfSeraphim
merci
0
x11r6 Messages postés 353 Date d'inscription jeudi 13 mars 2008 Statut Membre Dernière intervention 7 mars 2017 59
19 mars 2009 à 00:48
ou bien...

if [ -f lefichier ]
then
// le fichier existe
else
// le fichier existe pas
fi

man test

cordialement
0
Merci de votre réponse.
Cependant j'ai un probléme pour adapter cette commande.
Je m'explique....

supposons que j'entre la commande :

$ sh test.sh fichier1

en ayant ds le script :

if [ -e $* ]
echo "le fichier $* existe"
else
echo "le fichier $* n'existe pas"
fi

on a comme résultat :

le fichier fichier1 existe

Cependant, lorsque je tape comme commande : $ sh test.sh fichier1 fichier1

on a comme résultat le fichier fichier1 fichier2 n'existe pas.

Comment faire pour que le test soit fait d'un coup uniquement sur fichier1 et d'un autre coup sur fichier2 et non pas sur "fichier1 fichier2" ( qui correspond à rien )?


Merci
0
HostOfSeraphim Messages postés 6750 Date d'inscription jeudi 2 février 2006 Statut Contributeur Dernière intervention 31 juillet 2016 1 608 > Arun
19 mars 2009 à 09:03
C'est normal, $* correspond à l'ensemble des valeurs passées en paramètre.

0
arun > HostOfSeraphim Messages postés 6750 Date d'inscription jeudi 2 février 2006 Statut Contributeur Dernière intervention 31 juillet 2016
19 mars 2009 à 14:50
Comment pourrais-je donc faire pour que je programme vérifie le $1 en premier puis le $2 ainsi de suite jusqu'au nombre d'arguments que j'entre ?

Merci
0
jivef Messages postés 927 Date d'inscription mercredi 11 août 2004 Statut Membre Dernière intervention 12 novembre 2020 306
19 mars 2009 à 20:07
Bonjour,
La solution est $@ qui prend les paramètres un par un.
Mais je te conseille de mettre ton test à l'intérieur d'une boucle for...
Pour être bref :

#!/bin/sh
for $@ in param1 param2 param3 [...] param22487899887755396
do
if test ...
..
fi
done.

Vérifie la syntaxe, mais je crois que c'est ça.

Bien à toi
0
Bonsoir,

Merci de votre aide.

J'ai essayé plusieurs type de syntaxe et ça veut pas fonctionner :s
0