Page 2 sur 3

Re: script de multiplication sans résultat

Posté : dim. 26 mars 2017 14:02
par calixtus06

Dernier message de la page précédente :

Par rapport à ton erreur:
On assigne une variable sans mettre de $
a='blabla'
Et on l'évalue avec le symbole $
echo $a
Dans ton echo tu as basiquement echo "le résultat de la multiplication est $((*))", ce qui retourne une erreur.
Si je comprends bien il aurait fallu écrire:

Code : Tout sélectionner

#!/bin/bash
#comme sujet d'un premier script je veux créer une commande "multiplication"
#l'utilisateur entre deux nombre même décimaux  après le mot "multiplier:" et cela applique la multiplication de ces deux nombres
echo -n "multiplier:"
var=f1
var=f2
read f1 f2
echo "le résultat de la multiplication = $(($f1*$f2))"
exit 0
J'ai réussi !!!

Re: script de multiplication sans résultat

Posté : dim. 26 mars 2017 14:03
par calixtus06
y a plus qu'à filtrer la fonction par bc et transformer le script en commande en le glissant dans le PATH ??

Code : Tout sélectionner

#!/bin/bash
#comme sujet d'un premier script je veux créer une commande "multiplication"
#l'utilisateur entre deux nombre même décimaux  après le mot "multiplier:" et cela applique la multiplication de ces deux nombres
echo -n "multiplier:"
var=f1
var=f2
read f1 f2
echo "le résultat de la multiplication = $(($f1*$f2))"
#je vérifie que bc est installé
if [ ! -z $(which bc) ]
then
echo "$f1 * $f2" | bc 
fi

Code : Tout sélectionner

nicolasmintkde-desktop nicolasmintkde # ./Multiplication3.sh
multiplier:3.5 5
./Multiplication3.sh: ligne 8: 3.5*5 : erreur de syntaxe : opérateur arithmétique non valable (le symbole erroné est ".5*5")
17.5
nicolasmintkde-desktop nicolasmintkde # 
 
j'ai un résultat mais avec une ligne d'erreur ( ??)

Là j'ai pas d'idée encore, merci à vous deux

Re: script de multiplication sans résultat

Posté : dim. 26 mars 2017 15:23
par WarLocG
La forme bash

Code : Tout sélectionner

echo "le résultat de la multiplication = $(($f1*$f2))"
ne gère pas les virgules

Correction:

Code : Tout sélectionner

#!/bin/bash
#comme sujet d'un premier script je veux créer une commande "multiplication"
#l'utilisateur entre deux nombre même décimaux  après le mot "multiplier:" et cela applique la multiplication de ces deux nombres
echo -n "multiplier:"
var=f1
var=f2
read f1 f2
echo -n "le résultat de la multiplication = " #echo sans passage à la ligne
#je vérifie que bc est installé
if [ ! -z $(which bc) ]
then
  echo "$f1 * $f2" | bc
else
  echo $(($f1 * $f2))
fi
Si bc n'est pas installé, bash sera utilisé.

Re: script de multiplication sans résultat

Posté : dim. 26 mars 2017 21:04
par WarLocG
calixtus06 a écrit :J'ai essayé de faire un mini programme avec les syntaxes que tu m'as indiquées:

Code : Tout sélectionner

#! /bin/bash
read -p "facteur1:"f1
read -p "facteur2:"f2
echo $f1*$f2 | bc
ensuite je l'exécute en ligne de commande:

Code : Tout sélectionner

nicolasmintkde-desktop nicolasmintkde # ./Multiplicationread.sh 
facteur1:f1 2 <- ici tu vois que f1 n'est pas la variable mais fait partie du message
facteur2:f2 3 <- idem pour f2
...
Qu'est ce qui se passe ?
J'avais pas vu cette partie, je t'y répond maintenant

Code : Tout sélectionner

#! /bin/bash
read -p "facteur1:"f1  <- ne colle pas tes variable et le message
read -p "facteur2:"f2  <- idem
echo $f1*$f2 | bc       <- tu as oublié les "", le truc c'est d'envoyer une opération mathématique a bc pour qu'il l'évalue. bc est une calculatrice en ligne de commande, lui envoyer une opération (un calcul) fait qu'il renvoit le résultat si y a pas d'erreur dans l'opération.

Re: script de multiplication sans résultat

Posté : dim. 26 mars 2017 21:21
par calixtus06
Encore merci pour ta patience, j'ai corrigé mon script et j'y vois un peu plus clair.

peut on revenir sur ces deux syntaxes:
read -p "facteur1:"f1 <- ne colle pas tes variable et le message
read -p "facteur2:"f2 <- idem
Questions de débutant un peu perdu: que signifie read -p et ensuite la syntaxe qui suit: "facteur1:"f1 qu'il fallait écrire: "facteur1:" f1

Re: script de multiplication sans résultat

Posté : dim. 26 mars 2017 21:53
par WarLocG
le -p de read c'est pour lui donner un petit message d'invite pour l'utilisateur
teste ca:
read a
read -p "Inserer message ici: " b
echo "$a $b"
Tu verras qu'avec le read -p tu auras une invite en plus :)
et ensuite la syntaxe qui suit: "facteur1:"f1 qu'il fallait écrire: "facteur1:" f1
Bah si tu colles la variable au message, il fera partie du message (du -p ), et tu n'auras aucune variable a assigner non plus du coup. Donc les séparer par un espace.

Re: script de multiplication sans résultat

Posté : dim. 26 mars 2017 23:33
par calixtus06
les deux points " : " remplacent "=" ?

Re: script de multiplication sans résultat

Posté : lun. 27 mars 2017 00:02
par WarLocG
Oui ca fait partie de la chaîne de caractère, enfin du message. Entre les guillemets tu mets ce que tu veux.

Re: script de multiplication sans résultat

Posté : lun. 27 mars 2017 02:13
par alain
Bonjour vous deux ;)
WarLocG a écrit : Et pour les filtres, alain t'a donné l'explication mais un exemple est plus parlant:
J'en aurai été bien incapable :D
WarLocG a écrit : Les filtres et les tests c'est des vérifications dans lesquels tu anticipes des erreurs que pourraient faire un utilisateur avec ton script. C'est avec la logique, la base de la programmation :)
Je suis tout à fait d'accord, j'ai «boufé» 2 ans de logique (à l'école) sans faire une ligne de programmation, juste des applications sur portes pneumatiques, électriques et électroniques.
c'est sur que j'en ai manié du 1 et du 0 ;)
les filtres, test, conditions, boucles... etc ça m'est venu plus tard avec la pratique du basic, puis du turbo pascal.
Je suis vos intéressants échanges, mais je m’aperçois qu'avec l'age j'ai beaucoup plus de mal a retenir la syntaxe propre au shell. Je comprends, mais 2 mn après j'ai
oublié la syntaxe du coup obligé de revenir sur le sujet :? Ha! il y a 30 ans je lisais une fois "for i=1 to x ; if A$= y ; then goto z" c'était gravé dans le marbre :lol:
J'ai dit 30 ans? ben en fait tout comptes fait c'est plutôt 35.... :oops:

Re: script de multiplication sans résultat

Posté : lun. 27 mars 2017 12:00
par WarLocG
Ne t'inquiète pas que j'oublie aussi ;) Après être passé par BASICA sur Commodore64, QBasic, pascal, les batch (+config.sys et autoexec.bat), le dotNet (vb.net / C#), langages web + SQL, bash, C, java, PHP, python.. Je mélange et je ne retiens pas tout. Heureusement, on a internet pour se ressourcer :D

Re: script de multiplication sans résultat

Posté : mar. 28 mars 2017 14:25
par calixtus06
hello pour finir une question qui me turlupine: . Peut on me détailler cette "formule" , sa signification:

Code : Tout sélectionner

if [ ! -z $(which bc) ]
si la chaîne < c'est qui c'est quoi ? paramètre, variable ?) )
n'est pas vide, le contenu de la variable (which bc) <je ne comprend pas

merci d'avance