A voir également:
- Jeu "le lebyrinthe"
- 94 jeu - Télécharger - Puzzle & Réflexion
- Jeu zuma - Télécharger - Jeux vidéo
- Jeu 94 degrés - Télécharger - Divers Jeux
- Le mot le plus long jeu gratuit - Télécharger - Outils professionnels
- Jeu serpent pomme - Guide
5 réponses
mamiemando
Messages postés
33274
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 septembre 2024
7 782
7 mai 2012 à 01:43
7 mai 2012 à 01:43
A priori je pense qu'il faut simplement écrire les questions en shell avec echo, lire la réponse avec read, et traiter la réponse avec un case. Non ?
https://openclassrooms.com/fr/courses/43538-reprenez-le-controle-a-laide-de-linux/43394-les-conditions
Bonne chance
https://openclassrooms.com/fr/courses/43538-reprenez-le-controle-a-laide-de-linux/43394-les-conditions
Bonne chance
[Dal]
Messages postés
6193
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
4 juillet 2024
1 089
7 mai 2012 à 15:00
7 mai 2012 à 15:00
Salut mamiemando et snif,
Le tutoriel que tu indiques concerne Bourne Again Shell (bash), alors que notre ami snif parle, apparemment, du Bourne Shell (sh).
bash comportant des d'extensions au shell qui sont des "bashisms", je le dirigerai plutôt vers une ressource qui lui permettre d'écrire un code portable, comme :
http://fr.lang.free.fr/cours/Shell_v2.0.pdf
C'est un bon document en français, qui part de la syntaxe sh, et aborde les particularités de shells plus évolués comme bash ou ksh.
Par exemple, utiliser sh ne lui permettra pas d'intégrer des variables dimensionnées (tableaux) dans son script. Cela le limite aux variables simples.
Dal
Le tutoriel que tu indiques concerne Bourne Again Shell (bash), alors que notre ami snif parle, apparemment, du Bourne Shell (sh).
bash comportant des d'extensions au shell qui sont des "bashisms", je le dirigerai plutôt vers une ressource qui lui permettre d'écrire un code portable, comme :
http://fr.lang.free.fr/cours/Shell_v2.0.pdf
C'est un bon document en français, qui part de la syntaxe sh, et aborde les particularités de shells plus évolués comme bash ou ksh.
Par exemple, utiliser sh ne lui permettra pas d'intégrer des variables dimensionnées (tableaux) dans son script. Cela le limite aux variables simples.
Dal
mamiemando
Messages postés
33274
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 septembre 2024
7 782
7 mai 2012 à 15:06
7 mai 2012 à 15:06
Hello Dal;
En fait j'ai indiqué à snif ce tutoriel car pour moi une grande partie de la syntaxe sh et bash reste la même et son exercice est suffisamment simple pour qu'il n'ait pas à utiliser des choses "évoluées" en bash qui le confronterait justement aux nuances entre bash et sh, et parce que vue la question, snif devrait à mon avis commencer par s'imprégner de la logique shell en lisant un cours ou un tutoriel.
Ceci dit, tu as parfaitement raison de signaler qu'il devrait plutôt se baser sur un tutoriel sur "sh" s'il venait à manipuler des choses "évoluées".
En tout cas, merci pour ta vigilance !
En fait j'ai indiqué à snif ce tutoriel car pour moi une grande partie de la syntaxe sh et bash reste la même et son exercice est suffisamment simple pour qu'il n'ait pas à utiliser des choses "évoluées" en bash qui le confronterait justement aux nuances entre bash et sh, et parce que vue la question, snif devrait à mon avis commencer par s'imprégner de la logique shell en lisant un cours ou un tutoriel.
Ceci dit, tu as parfaitement raison de signaler qu'il devrait plutôt se baser sur un tutoriel sur "sh" s'il venait à manipuler des choses "évoluées".
En tout cas, merci pour ta vigilance !
et merci les amis pour les tutoriels. et excuses moi mamiemando de te contre dire, mais je truve ce projet plutot dur pour des eleves qui viennent d'etudier linux et la programmtion shell pour la premiere fois. en fait nos connaissances en classe ne dépassent pas les commandes de bases, les echo, read, grep et quelques applications des pipes, donc quand je me retrouve face au labyrinthe, j'avoue que j'ai la frousse :S
rebonjour les amis
voilà j'ai ecrit un petit script pour le jeu "le compte est bon", toutefois ça se plante.
#!/bin/sh
a=5
b=3
c=2
r=10
echo "voici vos entiers de base:"
echo "a=$a"
echo "b=$b"
echo "c=$c"
echo "saisissez l'operation arithmétique utilisant ces entiers afin d'avoir le résultat 5,5."
echo "l'operation devra etre de la forme a operation b operation c"
read resultat
k=$(expr'resultat')
if [$k -eq r]
then
echo "touché, vus avez 4 pts de plus "
else
echo "oups, raté. vs avez 4 pts de moins."
fi
>>je rentre la bonne opération arithmétique qui est a+b+c et comme réponse, le terminal me renvoie ce code erreur:
""
~/..../ : 16: resultat not found
expr: missing operand
try 'expr --help' for more information
[:23:missing]
oups, raté, vs avez 4 pts de moins. ""
pouvez vous m'eclaircir sur ce code.
voilà j'ai ecrit un petit script pour le jeu "le compte est bon", toutefois ça se plante.
#!/bin/sh
a=5
b=3
c=2
r=10
echo "voici vos entiers de base:"
echo "a=$a"
echo "b=$b"
echo "c=$c"
echo "saisissez l'operation arithmétique utilisant ces entiers afin d'avoir le résultat 5,5."
echo "l'operation devra etre de la forme a operation b operation c"
read resultat
k=$(expr'resultat')
if [$k -eq r]
then
echo "touché, vus avez 4 pts de plus "
else
echo "oups, raté. vs avez 4 pts de moins."
fi
>>je rentre la bonne opération arithmétique qui est a+b+c et comme réponse, le terminal me renvoie ce code erreur:
""
~/..../ : 16: resultat not found
expr: missing operand
try 'expr --help' for more information
[:23:missing]
oups, raté, vs avez 4 pts de moins. ""
pouvez vous m'eclaircir sur ce code.
merci pour votre reponse
voilà j'ai fait un petit effort et j'ai essayé de corriger un peu mon script:
#!/bin/sh
a=5
b=3
c=2
r=10
echo "voici vos entiers de base:"
echo "a=$a"
echo "b=$b"
echo "c=$c"
echo "saisissez l'operation arithmétique utilisant ces entiers afin d'avoir le résultat $r."
echo "l'operation devra etre de la forme a operation b operation c"
read resultat
#je devrais peut etre mettre une condition telle que les opérandes soient encadrées avec les {} afin que ça soit calculé dans le expr: si c'est une operande; la remplacer avec {op}, sinon, on passe.
#on pourrait considerer les composantes de la var resultat comme les composantes d'un tableau; si tab[i]==(a || b || c) faire tab[i]==({a} || {b] || {c}) sinn i<-i+1. reste, comment l'ecrire en shell sh.!!!!!
$k=$((expr'$resultat'))
if [$k -eq $r]
then
echo "touché, vous avez 4 pts de plus "
else
echo "oups, raté. vous avez 4 pts de moins."
fi
en fait j'ai essayé les modifications que vous m'aviez proposées mais je tombe toujours sur la meme erreur.
et une autre question: vous m'aviez dit que expr était inutile, chose que je en comprends pas. dans ce script; l utilisateur est sencé entrer l'expression a+b+c, si on n'utilise pas l'expression expr; comment peut-on veifier si cette expression vérifie bien le compte demandé ou non???!
voilà j'ai fait un petit effort et j'ai essayé de corriger un peu mon script:
#!/bin/sh
a=5
b=3
c=2
r=10
echo "voici vos entiers de base:"
echo "a=$a"
echo "b=$b"
echo "c=$c"
echo "saisissez l'operation arithmétique utilisant ces entiers afin d'avoir le résultat $r."
echo "l'operation devra etre de la forme a operation b operation c"
read resultat
#je devrais peut etre mettre une condition telle que les opérandes soient encadrées avec les {} afin que ça soit calculé dans le expr: si c'est une operande; la remplacer avec {op}, sinon, on passe.
#on pourrait considerer les composantes de la var resultat comme les composantes d'un tableau; si tab[i]==(a || b || c) faire tab[i]==({a} || {b] || {c}) sinn i<-i+1. reste, comment l'ecrire en shell sh.!!!!!
$k=$((expr'$resultat'))
if [$k -eq $r]
then
echo "touché, vous avez 4 pts de plus "
else
echo "oups, raté. vous avez 4 pts de moins."
fi
en fait j'ai essayé les modifications que vous m'aviez proposées mais je tombe toujours sur la meme erreur.
et une autre question: vous m'aviez dit que expr était inutile, chose que je en comprends pas. dans ce script; l utilisateur est sencé entrer l'expression a+b+c, si on n'utilise pas l'expression expr; comment peut-on veifier si cette expression vérifie bien le compte demandé ou non???!
copie/colle le script tel quel, enregistre-le, rend le exécutable, et exécute-le
le shell n'est pas un sous-langage dont les règles seraient facultatives.
Télécharge la version française de l'Advanced Bash Scripting, sur tldp.org!
#!/bin/sh a=5 b=3 c=2 r=10 echo "voici vos entiers de base:" echo "a=$a" echo "b=$b" echo "c=$c" echo "saisissez l'operation arithmétique utilisant ces entiers afin d'avoir le résultat 5,5." echo "l'operation devra etre de la forme a operation b operation c" read resultat k=$(( resultat )) if [ $k -eq $r ] then echo "touché, vus avez 4 pts de plus " else echo "oups, raté. vs avez 4 pts de moins." fiet observe les différences avec ce que tu as écrit.
k=$(( resultat )) #le shell opère l'évaluation arithmétique if [ $k -eq $r ] #il faut des espaces à l'intérieur des crochets: [<espace><expression><espace><opérateur><espace><expression><espace>]
le shell n'est pas un sous-langage dont les règles seraient facultatives.
Télécharge la version française de l'Advanced Bash Scripting, sur tldp.org!
merci pour cet éclaircissement, sauf que nous ne sommes toujours pas sur le même longueur d'onde.
en fait, l'utilisateur devra me renter une expression du genre "a+b+c" ou encore "5+3+2"; le script devra vérifier si cette opération arithmétique aura comme résultat ce que contient la variable r=10. et non de rentrer juste un nombre et vérifier si c'est le même contenu dans r.
en exécutant le script que vous m'aviez proposé, j'ai l'erreur suivante:
/home/user/projet/CEB2: 16; Illégal number: a + b + c
et ce que ce soit j'utilise les lettres (a,b,c) ou les chiffres (5,3,2) et que j'introduise ou pas des espaces entre les opérandes et les opérations.
en fait, l'utilisateur devra me renter une expression du genre "a+b+c" ou encore "5+3+2"; le script devra vérifier si cette opération arithmétique aura comme résultat ce que contient la variable r=10. et non de rentrer juste un nombre et vérifier si c'est le même contenu dans r.
en exécutant le script que vous m'aviez proposé, j'ai l'erreur suivante:
/home/user/projet/CEB2: 16; Illégal number: a + b + c
et ce que ce soit j'utilise les lettres (a,b,c) ou les chiffres (5,3,2) et que j'introduise ou pas des espaces entre les opérandes et les opérations.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 415
21 mai 2012 à 11:34
21 mai 2012 à 11:34
Salut,
Quel shell utilises-tu ? (echo $SHELL && readlink -f /bin/sh)
Chez moi (avec bash) le script de "qqchquicommenceparQ" fonctionne très bien.
Quel shell utilises-tu ? (echo $SHELL && readlink -f /bin/sh)
Chez moi (avec bash) le script de "qqchquicommenceparQ" fonctionne très bien.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
[Dal]
Messages postés
6193
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
4 juillet 2024
1 089
21 mai 2012 à 14:35
21 mai 2012 à 14:35
Salut,
Avec sh sous FreeBSD :
ne donne pas d'erreur
Dal
Avec sh sous FreeBSD :
k=$(( $resultat ))
ne donne pas d'erreur
Dal
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 415
21 mai 2012 à 14:38
21 mai 2012 à 14:38
Salut Dal,
Je confirme (ash et dash) avec un peu de fric devant ça marche ;-))
Merci.
Je confirme (ash et dash) avec un peu de fric devant ça marche ;-))
Merci.