Vérifier l'existence d'un fichier

Arun -  
 Arun -
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 365 Statut Membre 59
 
bonsoir
test -f lefichier
cordialement
0
HostOfSeraphim Messages postés 7340 Statut Contributeur 1 608
 
Un petit indice pour tester l'existence d'un fichier :

if [ -e $fichier ] then...

0
Arun
 
je n'arrive pas à voit ta réponse HostOfSeraphim
merci
0
x11r6 Messages postés 365 Statut Membre 59
 
ou bien...

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

man test

cordialement
0
Arun
 
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 7340 Statut Contributeur 1 608 > Arun
 
C'est normal, $* correspond à l'ensemble des valeurs passées en paramètre.

0
arun > HostOfSeraphim Messages postés 7340 Statut Contributeur
 
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 1024 Statut Membre 306
 
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
Arun
 
Bonsoir,

Merci de votre aide.

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