Commande "case"

Questions concernant les lignes de commandes
Avatar du membre
tioker
Messages : 53
Enregistré le : sam. 6 mai 2017 00:33
Localisation : Anjou...Feu !
Contact :

Commande "case"

Messagepar tioker » jeu. 3 août 2017 11:40

Bonjour,
Je veux simplement éxécuter dans un script des lignes de commandes suivant le choix fait.
Plutôt que de multipliuer les if je pensais que la commande case était plus propre.
Mais après moulte essais, rien n'y fait.
Je soumets donc mon code (simplifié) à la sagacité de cet auditoire.
Je lance la commande en sh case.sh 1 ou n n étant < 10.

Code : Tout sélectionner

#!/bin/bash
#
echo "chiffre saisie " $1
case $1 in
   1|2|3|5|7)
      echo "$1 est un nombre premier"
      ;;
   *)
      echo "$1 n est pas un nombre premier"
      ;;
esac

Le résultat est affligeant et toujours le même, que je change la présentation de la variable ($1, "$1"...), que je saisisse la variable au clavier...
Mes recherches sur le net ont toutes été infructueuses, raison pour laquelle j'en appelle à la communauté.
Résultat du lancement:
$ sh case.sh 1
chiffre saisie 1
case.sh: 4: case.sh: Syntax error: word unexpected (expecting "in")
$


Merci de votre aide.

Ah oui, j'oubliai; dans mon état d'ignorance je n'arrive pas à clairement faire la distinction entre sh et bash. Quelqu'un peut-il me donner la référence d'une explication claire, qu'elle soit en français (préférable) ou anglais ?

Merci d'avance
Modifié en dernier par tioker le jeu. 3 août 2017 18:25, modifié 2 fois.
Linux Mint 18.1 Cinnamon 64 bits
Sinon: Windows 10, NAS Synology, compte Google Drive, Chromebase, Chromebook, Chromecast, IOS

Avatar du membre
vv221
Messages : 30
Enregistré le : dim. 21 août 2016 16:52
Contact :

Re: Commande "case"

Messagepar vv221 » jeu. 3 août 2017 12:22

Ton code fonctionne parfaitement chez moi, sans aucune modification.
Donc je pense que tu as affaire à un des soucis les plus fourbes de la programmation : une erreur sur un caractère invisible. Par exemple tu peux avoir un blanc qui ressemble à une espace, mais qui en fait est un autre caractère invisible.

La solution la plus simple est d’effacer la ligne 4 (case $1 in) et de la ré-écrire.

Avatar du membre
tioker
Messages : 53
Enregistré le : sam. 6 mai 2017 00:33
Localisation : Anjou...Feu !
Contact :

Re: Commande "case"

Messagepar tioker » jeu. 3 août 2017 12:31

En fait ....
Je début en Linux donc j'ai continué à chercher et j'ai lu avec intérêt l'article du site OpenClassRooms, en particulier celui-là (et les suivants).
https://openclassrooms.com/courses/reprenez-le-controle-a-l-aide-de-linux/introduction-aux-scripts-shell.
Et savez-vous d'où semble venir mon erreur? Des droits du fichier.
Je n'avais pas mis le script exécutable puisque je le lançais en sh (ou bash).
Mais en mettant les bons droits, ça semble marcher.

Je vous tiens informés car je plonge dans le script complexe...

A+ et merci à vv221
Linux Mint 18.1 Cinnamon 64 bits
Sinon: Windows 10, NAS Synology, compte Google Drive, Chromebase, Chromebook, Chromecast, IOS


Retourner vers « Le terminal »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité