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

      0
      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é...
        0