Script shell (bash)
Fermé
widi70
Messages postés
649
Date d'inscription
jeudi 4 janvier 2007
Statut
Membre
Dernière intervention
22 juillet 2019
-
4 janv. 2007 à 14:58
amatesuran - 11 janv. 2011 à 21:02
amatesuran - 11 janv. 2011 à 21:02
A voir également:
- Script shell (bash)
- Script vidéo youtube - Guide
- Classic shell windows 11 - Télécharger - Personnalisation
- Shell pause ✓ - Forum Shell
- Ghost script - Télécharger - Polices de caractères
- Script bat - Guide
22 réponses
#!/bin/sh while [ -z $rep ] || [ $rep != 'O' ] do echo "entrez votre signe d'opération\n+ pour une adition\n- pour une soustraction\n/ pour une division\n* pour une multiplication." read signe echo "vous avez choisi $signe.\netes vous d'accord avec ce signe ' $signe ' ?\nO or N." read rep if [ $rep = N ]; then echo "Refaite votre choix" elif [ $rep = O ]; then echo "Entrez le premier chiffre ou nombre" fi done while [ -z $rep2 ] || [ $rep2 != 'O' ] do read chiffre1 echo "$chiffre1 vous convient-il ?\nO or N." read rep2 if [ $rep2 = N ]; then echo "Réécriver le premier chiffre." elif [ $rep2 = O ]; then echo "Entrez le second chiffre ou nombre." fi done while [ -z $rep3 ] || [ $rep3 != 'O' ] do read chiffre2 echo "$chiffre2 vous convient-il ?\nO or N." read rep3 if [ $rep3 = N ]; then echo "Réécriver le second chiffre." elif [ $rep3 = O ]; then echo "Calcul en cour." fi done let "a = $chiffre1" let "b = $chiffre2" if [ $signe = / ]; then let "c1 = a / b" echo "La solution de ce calcul est $c1" elif [ $signe = + ]; then let "c2 = a + b" echo "La solution de ce calcul est $c2" elif [ $signe = - ]; then let "c3 = a - b" echo "La solution de ce calcul est $c3" elif [ $signe = * ]; then let "c4 = a * b" echo "La solution de ce calcul est $c4" else echo " Opération non conforme." fi
voila ce que j'ai fais j'ai un problème avec la multiplication et je ne vois pas d'erreurs si quelqu'un peux me donner son avis.
merci d'avance
8 janv. 2011 à 10:12
Une bonne habitude à prendre est de toujours quoter ses variables, surtout dans les test avec "[...]".
En gras ce que j'ai corrigé ou ajouté.
Le "set -xv" en début sert à débuguer le script en enlevant le dièse qui commente la ligne.
Il serait bon aussi de rajouter des quotes (doubles) aux autres tests.
J'ai rajouté aussi des "-e" à tous les "echo" qui comportent des "\n" pour que ceux-ci soient pris en compte.
Modifié par lami20j le 8/01/2011 à 10:30
La solution de zipe31 est correcte.
Toutefois, lorsqu'on fait une opération de division je pense qu'il est souhaitable de faire un test pour la division avec zéro
A remplacer
avec
En revanche pour toi, je te suggère que lorsqu'il y a plusieurs imbrications de if, c'est plus pratique d'utiliser
Ce qui donne
8 janv. 2011 à 10:40
Pour aller plus loin, je crois que tu dois refaire ton algorithme
Volontairement j'ai testé l'opérateur $ qui n'est pas conforme et aussi j'ai choisi O (l'utilisateur peut toujours faire une erreur ;-)
Je ne vois pas l'intérêt de continuer à demander les chiffres ou nombres puisque de toute façon l'opérateur n'est pas bon.
Une idée sera que après la saisie de l'opérateur tu fais le test pour savoir s'il faut continuer ou pas, et ensuite offrir la possibilité d'utilisateur de changer d'opérateur ou pas.
11 janv. 2011 à 21:02