Script

Anonymous -  
jipicy Messages postés 41342 Statut Modérateur -
Bonjour et merci de votre temps.

Alors voilà. Dans le cadre d'un cours il m'est demandé d'écrire un petit script linux permetant d'afficher le nombre de fichier et dossier du repertoire courant. Pour le moment rien de bien difficile. Mais il semblerait que je ne comprenne pas très bien l'utilisation des elifs car à chaque fois que j'éxécute le script j'obtien l'erreur suivante :

nbElements: line 5: syntax error near unexpected token `elif'
nbElements: line 5: `elif [ $element != 0]'

voici le code :
element=`ls | wc -l`
if [ $element = 0 ]
then
echo -e "Il n\'y a aucun element dans le repertoire `pwd`"
elif [ $element != 0 ]
then
echo -e "Il y a $element elements dans le repertoire `pwd`"
fi
exit 0

-------- reprise du message --------
Remplacer le elif par un else marche très bien mais j'aimerais trouver mon erreur pour ne pas la refaire dans le futur. Merci encore et bonne fin de soirée.
A voir également:

2 réponses

jipicy Messages postés 41342 Statut Modérateur 4 896
 
Salut,

Quel shell utilises-tu ?

Sinon, il est vrai que le "elif" est superflu dans la mesure où il n'y a que 2 conditions (le else étant donc plus approprié).

A part ça chez moi ça marche bien avec un shell bash (GNU bash, version 3.00.16(2)-release)
0
Anonymous
 
Pour répondre à ta question nous sommes sur des machines virtuelles avec open suse j'utilise le terminal gnome version 2.18.2

Il semblerait que mon problème est été causé par le fait que j'ai coder le script sur windose avec notepad++ qui encode l'information en ANSI et que le shell reconnait UTF-8.
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
causé par le fait que j'ai coder le script sur windose avec notepad++ qui encode l'information en ANSI et que le shell reconnait UTF-8.

Pas tout a fait. Le problème vient surtout des fins de lignes qui ne sont pas les mêmes sous Windows (\n\r) que sous GNU/Linux (\n).

Il te faut convertir ton fichier au format Unix, soit avec l'utilitaire dos2unix, soit avec des outils comme Sed (voir la Faq à ce sujet Conversion retours chariots DOS (CRLF) / UNIX (LF)), ou bien Perl.
0