Page 1 sur 1

[Résolu] Commande "case"

Posté : jeu. 3 août 2017 11:40
par tioker
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

Re: Commande "case"

Posté : jeu. 3 août 2017 12:22
par vv221
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.

Re: Commande "case"

Posté : jeu. 3 août 2017 12:31
par tioker
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/repr ... ipts-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