Script linux

achraf -  
zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

pouvez vous m'aider a cet exercie.

Ecrire un script trouve_file.sh qui reçoit une chaîne de caractères en paramètre et vérifie si cette chaîne correspond un fichier dans le dossier personnel.

merci d'avance

2 réponses

  1. achraf
     
    voila ma reponse
    if [ -z $1 ];then
    echo saisir une chaine de charractere en parametre
    fi
    trouv='find /home/usr -name "$1" -type f | cut -d "/" -f 4'
    if [ $1 = $trouv ];then
    echo la chaine que vous avez entrer corresepond les fichiers suivants:
    echo $trouv
    else
    echo aucun fichier trouver
    fi
    mais il reste un probleme , le programme affiche just le premier parametre $1
    0
    1. achraf
       
      je vx afficher toutes les parametre de la chaine saisie
      0
    2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      A quoi elle ressemble ta chaine ?

      S'il y a des espaces c'est normal ;-(
      Dans ce cas là, soit il faut mettre des guillemets autour lors de son passage en paramètre au script, soit il faut tester "$@" et non "$1".
      0
    3. achraf
       
      je ss pas la question n'est pas clair , mais j'ai pris le cas qu'il ya des espaces
      voila j'ai ajoute le while et le shift :
      f [ -z $1 ];then
      echo saisir une chaine de charractere en parametre
      else
      while [ $# -ne 0 ];do
      trouv='find /home/farouky -name "$1" -type f | cut -d "/" -f 4'
      if [ $1 = $trouv ];then
      echo la chaine que vous avez entrer corresepond les fichiers suivants:
      echo $trouv
      else
      echo aucun fichier trouver
      fi
      shift
      done
      fi
      c'est juste ??
      0
    4. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      A mon avis il faut juste traiter qu'une chaine de caractères (avec ou sans espace) et chercher cette chaine comme étant le nom d'un fichier.

      Pour ce qui concerne la commande find (Action : printf) et le découpage pour n'obtenir que le nom du fichier, mieux vaut privilégier soit les fonctionnalités natives de la commande, soit le remplacement des paramètres.

      Pour find :
      $ find ~/trash/ -type f 
      /home/jp/trash/plop
      
      $ find ~/trash/ -type f -printf '%f\n'
      plop
      
      $

      Pour le remplacement de paramètres :
      $ A=$(find ~/trash/ -type f)
      
      $ echo ${A}
      /home/jp/trash/plop
      
      $ echo ${A##*/}
      plop
      
      $
      0