Résolu le 30-12-18 [Résolu] Commande "case"

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

[Résolu] Commande "case"

Message 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
Modifié en dernier par david37 le sam. 10 mars 2018 23:44, modifié 3 fois.
Raison : ajout du résolu
HP Victus 16: Mint 21.3 Cinnamon 6,0,4 + Windows 11 - Ryzen 5 5600H - NVIDIA GeForce GTX 1650 - Mem 16Go - SSD 512Go
pCloud Synchronisation en temps réel des 4 dossiers personnels

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

Re: Commande "case"

Message 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.

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

Re: Commande "case"

Message 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
HP Victus 16: Mint 21.3 Cinnamon 6,0,4 + Windows 11 - Ryzen 5 5600H - NVIDIA GeForce GTX 1650 - Mem 16Go - SSD 512Go
pCloud Synchronisation en temps réel des 4 dossiers personnels

Répondre