Problème script shell avec if find

Samefly -  
 Samefly -
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. Samefly
     
    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
  2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    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. Samefly
       
      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