Aller au contenu

[Résolu]script bash qui test si un fichier existe

Featured Replies

Posté(e)

Bonjour,

pour les cours je dois faire un scripts qui test si le fichier spécifié par l'utilisateur existe

voici mon script:

#!/bin/bash

#Tester si un répertoire/fichier existe, ou pas

shopt -s -o nounset

#Global declarations

if [ $# -ne 1 ]
then
 echo "Vous n'avez pas mis le bon nombre de paramètre"
 echo "Il vous en faut 1 seul"
else
 if [ -d "$1" ]
 then
   echo "$1 existe, c'est un répertoire"
 else
   if [ -e "$1" ]
   then
     echo "$1 existe, c'est un fichier"
   else
     if [ -e "$1.*" ]
     then
       echo "$1 existe, c'est un fichier"
     else
       echo "$1 n'existe pas"
     fi
   fi
 fi
fi

tous fonctione sauf si le fichier a une extension!

exemple: je met comme paramètre "monfichier" et qu'il yexiste un fichier "monfichier.txt"

mon script me dis qu'il n'y a pas de fichier "monfichier"

je sais pas si c'est très claire :byebye:

merci de votre aide

ps: on utilise cygwin comme émulateur de shell

Modifié par mre0311
[codebox]

Posté(e)

if[ -e $FICHIER ] te dit si $FICHIER existe (que ce soit un repertoire, un soket, un pipe nommé, etc, etc...). Si tu veux chercher si ${FICHIER}.${EXTENSION} existe quelque soit l'extension, ça va pas être possible avec if [ -e ]

tu devrais essayer dans ce cas un list=$(ls ${FICHIER}.*), dont tu testes la tailleaccessible via ${#list}

;)

Posté(e)
  • Auteur

Enfaite j'ai trouvé une solution,

j'avais mis if [ -e "$1.*" ] alors que il fallait mettre if [ -e "$1".* ] et la miracle sa fonctionne! (foutu guillemet)

lorinc, j'ai pas tous compris ce que tu m'explique :youhou: mais merci de ton aide

Posté(e)
lorinc, j'ai pas tous compris ce que tu m'explique :roll: mais merci de ton aide
tu devrais essayer dans ce cas un list=$(ls ${FICHIER}.*), dont tu testes la tailleaccessible via ${#list}

Pour reprendre ce qu'il a mis :

list=$(ls ${FICHIER}.*)

on décortique :

ls ${FICHIER}.* --> donnera la liste des fichiers nommé le_nom_que_tu_recherches.* donc n'importe quelle extension

Ce résultat est mis dans la variable list.

#list donne la taille.

Et voilà :chinois:

Posté(e)
  • Auteur

Oui effectivement avec la balise code c'est plus lisible :craint:

Merci de votre aide, le résultat que j'obtiens me conviens

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.