Problème script shell avec if find

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

2 réponses

  1. Contributeur
    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

    1. 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é...
  2. 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...