Erreur de syntaxe près du symbole inattendu "else"
Résolu/FerméTheo_0055 Messages postés 275 Date d'inscription mardi 21 juillet 2020 Statut Membre Dernière intervention 19 janvier 2023 - 6 déc. 2022 à 11:49
- Erreur de syntaxe près du symbole inattendu « ( »
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Symbole spéciaux - Guide
- On off symbole ✓ - Forum Matériel & Système
- Au carré symbole ✓ - Chromebook
6 réponses
Modifié le 6 déc. 2022 à 11:18
Bonjour,
Explication du problème
- Il manque un ";" devant le then (ou alors, il faut que tu passes à la ligne devant le then).
- Le ";" après exit 1 n'est pas faux, mais superflu.
- Je te recommande (même si ça n'est pas la source du problème) de toujours entourer de guillemets l'évaluation d'une variable (e.g., "$i" au lieu de $i). C'est un peu plus lourd à écrire, mais si ta variable contient des espaces, ça évitera que ton interpréteur shell considère que la valeur de la variable s'arrête au premier espace.
Pour rappel en bash, le ";" sert à mettre plusieurs instructions (qui devraient être sur des lignes séparées) sur une même ligne. Toutes sont évaluées de gauche à droite, peut importe le résultat des commandes qui précédent sur cette même ligne (contrairement à &&).
Exemple
#!/bin/sh n=1 for i in `seq 1 10` do if [ "$n" -eq 0 ]; then exit 1 else if [ "$i" -lt 2 ] then echo "i vaut $i et est plus petit que 2" elif [ "$i" -gt 7 ] then echo "i vaut $i et est plus grand que 7" elif [ "$i" -gt 3 ] then echo "i vaut $i et est plus grand que 3" fi fi done
Résultat
i vaut 1 et est plus petit que 2
i vaut 4 et est plus grand que 3
i vaut 5 et est plus grand que 3
i vaut 6 et est plus grand que 3
i vaut 7 et est plus grand que 3
i vaut 8 et est plus grand que 7
i vaut 9 et est plus grand que 7
i vaut 10 et est plus grand que 7
Bonne chance
6 déc. 2022 à 11:15
donc c'est que ça! merci beaucoup
Modifié le 6 déc. 2022 à 11:16
Bonjour,
Pourquoi ne pas en ligne 4 mettre le then, comme les autres if, sur la ligne suivante ?
Ou alors une syntaxe en une ligne, mais de mémoire il existe des différences en sh et bash
if [ $n -eq 0 ]; then exit 1;
6 déc. 2022 à 11:17
en fait moi je me disais que c'est la meme chose
Et d'ailleurs shelle et bash c'est quoi la différence?car moi j'arrive pas a les distinguer
6 déc. 2022 à 11:21
- Il existe plein de shells : bash, dash, ksh, tcsh, zsh, etc.
- Le shell seul est assez limité et c'est pourquoi il y a eu toutes ces évolutions.
- Au final, tous ces shells ont une base commune (le langage shell), mais chacun à en plus un jeu de primitives spécificiques (par exemple l'opérateur $( ... ) en bash).
Bonne chance
6 déc. 2022 à 11:23
Le shell est le nom générique de l'interpréteur de commande. A l'origine ce programme était sh, il y a aussi ksh, ... et désormais souvent bash. Les syntaxes peuvent très légèrement être différentes. Et tapant ps dans la fenêtre terminal, tu as les processus en cours, et le nom du shell que tu utilises.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question6 déc. 2022 à 11:38
ah d'accord merci donc le bash est juste une branche du shell
6 déc. 2022 à 11:42
Oui c'est l'idée, mais je dirais plutôt un type de shell (ou une variante de shell, ou une déclinaison de shell), car le mot "branche" a un autre sens en programmation.
6 déc. 2022 à 11:49
OK merci