Bonjour à tous
Je souhaiterais simplement détecté la présence d'un dossier pourtant avec ce script
fichier="beta"
if [ -d $fichier ]; then
echo "$fichier existe";
else
echo "$fichier n'est pas present";
fi
j'ai les erreurs suivantes
./test.sh: line 6: syntax error near unexpected token
fi'
fi'
./test.sh: line 6:
aurez vous une solution ?
# Le code semble correct mais…
Posté par JJD . Évalué à 2.
Salut tout seul,
Est-ce qu'il y a une ligne dans ton script indiquant l’interpréteur à utiliser (première ligne, commençant par #!) ? Sinon quel est le shell courant ?
Peux-tu vérifier qu'il n'y a pas quelque part un caractère invisible qui viendrait polluer le code, comme une espace insécable ou quelque chose dans ce genre-là ?
[^] # Re: Le code semble correct mais…
Posté par Cyril Brulebois (site web personnel) . Évalué à 2.
Pas si le copier-coller est fidèle (en vérifiant le code markdown).
Et effectivement le code me semble correct.
Et je ne vois rien qui puisse être problématique avec un quelconque shell.
Debian Consultant @ DEBAMAX
[^] # Re: Le code semble correct mais…
Posté par David Marec . Évalué à 2.
Non, tant que le shell utilisé n'est précisé, ce code n'est pas correct.
# plusieurs erreur de base
Posté par NeoX . Évalué à 3.
ton ; en fin de ligne n'a pas lieu d'etre
cela declenche alors l'erreur APRES le
present";
donc sur le fi
ca semble marcher avant le else, donc soit ton shell le tolere, et le fi est alors inutile
ton script resssemblerait alors à ca
ou bien, si c'est un shell standard
si ton shell est bash, ton test est faux, car -d va tester si c'est un directory (un dossier), le test pour savoir si c'est un fichier c'est -f, celui pour savoir si ca existe -e
[^] # Re: plusieurs erreur de base
Posté par totof2000 . Évalué à 2.
Il me semble que le but initialbest bien de tester la présence d'un directory.
[^] # Re: plusieurs erreur de base
Posté par NeoX . Évalué à 3.
oui, c'est ce que dit l'enoncer,
mais le code utilisant une variable $fichier
cela m'a mis la confusion
[^] # Re: plusieurs erreur de base
Posté par cimcim . Évalué à 1.
il peut mettre un ";" après le test du if si il veut avoir le then sur la même ligne, mais faut mettre un espace avant le ";"
[^] # Re: plusieurs erreur de base
Posté par Cyril Brulebois (site web personnel) . Évalué à 2.
Non, l'espace n'est pas nécessaire.
Debian Consultant @ DEBAMAX
[^] # Re: plusieurs erreur de base
Posté par cimcim . Évalué à 1.
Effectivement, toutes mes confuses, l'espace n'est pas nécessaire.
J'ai tellement pris l'habitude d'en mettre un pour la lisibilité que j'en était arrivé à le croire obligatoire.
[^] # Re: plusieurs erreur de base
Posté par benoar . Évalué à 1.
Peut-être confonds-tu avec les espace avant/après les crochets fermant/ouvrant ? Je me suis déjà bêtement fait avoir avec ça.
[^] # Re: plusieurs erreur de base
Posté par Cyril Brulebois (site web personnel) . Évalué à 4.
C'est effectivement un point qui revient régulièrement dans les formations shell…
Rappel rapide :
[
est une commande, donc doit être séparée duif
précédent. Puis viennent ses arguments, donc espace également après[
. Quant à]
, c'est un argument à passer (le dernier) à la commande[
donc doit être séparé des autres arguments. Après le]
, pas de contrainte particulière (si on a un;
notamment, il peut être collé).Exemple sans
if
pour montrer l'aspect facultatif des séparations en dehors des crochets :[ 0 = 1 ]||[ 1 = 1 ]
Debian Consultant @ DEBAMAX
[^] # Re: plusieurs erreur de base
Posté par Matthieu Moy (site web personnel) . Évalué à 4.
Tiens, personne n'a encore crié sur l'absence de
""
autour de$fichier
. Ouille ouille ouille si$fichier
contient des espaces … ;-)[^] # Re: plusieurs erreur de base
Posté par Cyril Brulebois (site web personnel) . Évalué à 2.
Ça ne mène pas à l'erreur mentionnée, donc ça ne m'a pas paru pertinent de le mentionner à ce stade. La vie, les priorités, tout ça.
Debian Consultant @ DEBAMAX
# CRLF?
Posté par shar1 . Évalué à 1.
Hello
N'y aurait-il pas un caractère spécial type
CR
(\r
ou^M
) dans le fichier ?Vous pouvez utiliser la commande '
cat
' avec l'argument-A
(cat -A script
) et vérifier le cas échéant.Cdt,
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.