Problème script shell avec if find

Fermé
Samefly - 17 oct. 2016 à 13:06
 Samefly - 17 oct. 2016 à 19:10
Bonjour,

J'ai un petit problème au niveau d'un script shell, lorsque je fais

if find $PWD -name $1
then
echo "c'est trouvé"
else
echo "c'est pas trouvé"
fi

Le terminal m'affiche toujours "c'est trouvé" alors que le premier paramètre ne correspond pas à un nom de fichier existant..
Je vous avoue que je comprend pas pourquoi.
Quelqu'un aurait la solution ?

D'avance merci

A voir également:

2 réponses

Au final j'ai trouvé une solution:
rep=`find $PWD -name $1`
if [ "$rep" != "" ]
then
echo "c'est trouvé"
else
echo "c'est pas trouvé"
fi

Je reste quand même curieux de savoir pourquoi ça ne marche pas en faisant un if find...
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
17 oct. 2016 à 18:21
Salut,

Extrait du man find :
EXIT STATUS
find exits with status 0 if all files are processed successfully, greater than 0 if errors occur.

find retourne une erreur sur des erreurs de syntaxes propres à ses options.

Qu'il trouve ou non un fichier c'est pareil pour lui, la commande a résussi.

$ ls
fich

$ find . -name 'fich'
./fich

$ echo $?
0

$ find . -name 'fichier'

$ echo $?
0

$ find /rep -name 'fich'
find: «/rep»: Aucun fichier ou dossier de ce type

$ echo $?
1

0
Merci ! Je me suis rendu compte de ça, pas très cool comme commande, pour moi il est plus logique que la commande renvoie un message d'erreur si le fichier n'est pas trouvé...
0