[RESOLU]script de multiplication sans résultat
Posté : jeu. 23 mars 2017 21:23
https://forum-francophone-linuxmint.fr/
https://forum-francophone-linuxmint.fr/viewtopic.php?f=19&t=5326
Code : Tout sélectionner
#! /bin/bash
#set -x # activation du mode trace: permet de voir les erreurs
# if pour tester si arg1 vaut 'multiplication' + arg2 et arg3 non null
if [ $1 = "multiplication" ] && [ ! -z $2 ] && [ ! -z $3 ]; then
#echo "multiplication" # echo de test qui n'est plus necessaire
# alternative qui teste si bc est installe, si oui la commande utilisera bc
# autrement sera confiee a bash
if [ ! -z $(which bc) ]; then
echo "$2 * $3" | bc ;
else
echo $(( $2 * $3 )) ;
fi
fi
Code : Tout sélectionner
warlocg@debian-8:~$ echo "2.3 * 4" | bc
9.2
warlocg@debian-8:~$ echo $(( 2.3 * 4 ))
bash: 2.3 * 4 : erreur de syntaxe : opérateur arithmétique non valable (le symbole erroné est ".3 * 4 ")
Code : Tout sélectionner
warlocg@debian-8:~$ sh script_multi.sh multiplication 5.5 6
33.0
warlocg@debian-8:~$ sh script_multi.sh multiplication 6
warlocg@debian-8:~$
Code : Tout sélectionner
#echo "multiplication" # echo de test qui n'est plus necessaireCode : Tout sélectionner
#! /bin/bash
set -x
if [ $1 = "multiplication" ] && [ ! -z $2 ] && [ ! -z $3 ]
then
echo "multiplication"
fi
Code : Tout sélectionner
nicolasmintkde-desktop Bureau # ./Multiplication.sh multiplication 4 6
nicolasmintkde-desktop Bureau #
Code : Tout sélectionner
Multiplication.sh
Multiplication.sh.save
Multiplication.sh.save.1
Multiplication.sh.save.1.save
Tu parles de ceci ?calixtus06 a écrit :Pour ta question je pense voir du côté de la commande let. Mais commençons par le début
Le test manquant c'est simplement qu'il manque un filtre sur $2 et $3, en effet si je lanceWarLocG a écrit :En fait, il y a encore un test que j'ai oublié de faire, mais je vais te laisser le trouver
Code : Tout sélectionner
sh mon_script.sh multiplication 3 bQu'est-ce qu'un filtre et un test ? Je vois ce mot test partout sans vraiment comprendre.En fait, il y a encore un test que j'ai oublié de faire, mais je vais te laisser le trouver
Code : Tout sélectionner
#!/bin/bash
#comme sujet d'un premier script je veux créer une commande "multiplication"
#l'utilisateur entre deux nombres entiers après le mot "multiplication" et cela applique la multiplication de ces deux nombres
echo multiplication
read $1 $2
echo le résultat de la multiplication est '$1*$2'
exit 0Code : 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 "multiplication" et cela applique la multiplication de ces deux nombres
echo -n multiplication:
read $1 $2
echo "le résultat de la multiplication est $(($1*$2))"
exit 0
Code : Tout sélectionner
nicolasmintkde-desktop nicolasmintkde # ./Multiplication3.sh
multiplication:2 3
./Multiplication3.sh: ligne 6: * : erreur de syntaxe : opérande attendue (le symbole erroné est "*")
nicolasmintkde-desktop nicolasmintkde #
Code : Tout sélectionner
warlocg@debian-8:~$ read -p "facteur1 : " f1
facteur1 : 3
warlocg@debian-8:~$ read -p "facteur2 : " f2
facteur2 : 4
warlocg@debian-8:~$ echo "$f1 * $f2" | bc
12
Code : Tout sélectionner
#! /bin/bash
echo Nombre d\'arguments $#
echo Liste des arguments $@
echo Commande $0
echo argument1 $1
echo argument2 $2
echo argument3 $3
echo argument4 $4
echo argument5 $5
echo argument6 $6
echo argument7 $7
echo argument8 $8
echo argument9 $9
Code : Tout sélectionner
warlocg@debian-8:~$ bash script_args.sh echo hello le monde --color -vvv
Nombre d'arguments 6
Liste des arguments echo hello le monde --color -vvv
Commande script_args.sh
argument1 echo
argument2 hello
argument3 le
argument4 monde
argument5 --color
argument6 -vvv
argument7
argument8
argument9
Code : Tout sélectionner
warlocg@debian-8:~$ echo "3 * 4" | bc
12
warlocg@debian-8:~$ echo "3 * b" | bc
0
warlocg@debian-8:~$ echo $(( 3 * 4 ))
12
warlocg@debian-8:~$ echo $(( 3 * b ))
0
warlocg@debian-8:~$ sh script_multi.sh multiplication 2 p
0
Code : Tout sélectionner
#! /bin/bash
read -p "facteur1:"f1
read -p "facteur2:"f2
echo $f1*$f2 | bc
Code : Tout sélectionner
nicolasmintkde-desktop nicolasmintkde # ./Multiplicationread.sh
facteur1:f1 2
facteur2:f2 3
(standard_in) 1: illegal character: N
(standard_in) 1: syntax error
(standard_in) 1: illegal character: R
(standard_in) 1: illegal character: M
(standard_in) 1: syntax error
(standard_in) 1: illegal character: I
(standard_in) 1: illegal character: M
(standard_in) 1: illegal character: \303
(standard_in) 1: illegal character: \250
(standard_in) 1: illegal character: M
(standard_in) 1: illegal character: M
(standard_in) 1: illegal character: M
(standard_in) 1: illegal character: M
(standard_in) 1: illegal character: M
(standard_in) 1: illegal character: P
(standard_in) 1: illegal character: O
(standard_in) 1: illegal character: L
(standard_in) 1: illegal character: '
(standard_in) 1: illegal character: P
(standard_in) 1: illegal character: S
(standard_in) 1: illegal character: W
(standard_in) 1: illegal character: W
(standard_in) 1: illegal character: S
(standard_in) 1: illegal character: S
(standard_in) 1: illegal character: T
(standard_in) 1: illegal character: \303
(standard_in) 1: illegal character: \251
(standard_in) 1: syntax error
(standard_in) 1: illegal character: \303
(standard_in) 1: illegal character: \251
(standard_in) 1: illegal character: V
(standard_in) 1: illegal character: \303
(standard_in) 1: illegal character: \251
nicolasmintkde-desktop nicolasmintkde # ./Multiplicationread.sh
facteur1:f12
facteur2:f26
(standard_in) 1: illegal character: N
(standard_in) 1: syntax error
(standard_in) 1: illegal character: R
(standard_in) 1: illegal character: M
(standard_in) 1: syntax error
(standard_in) 1: illegal character: I
(standard_in) 1: illegal character: M
(standard_in) 1: illegal character: \303
(standard_in) 1: illegal character: \250
(standard_in) 1: illegal character: M
(standard_in) 1: illegal character: M
(standard_in) 1: illegal character: M
(standard_in) 1: illegal character: M
(standard_in) 1: illegal character: M
(standard_in) 1: illegal character: P
(standard_in) 1: illegal character: O
(standard_in) 1: illegal character: L
(standard_in) 1: illegal character: '
(standard_in) 1: illegal character: P
(standard_in) 1: illegal character: S
(standard_in) 1: illegal character: W
(standard_in) 1: illegal character: W
(standard_in) 1: illegal character: S
(standard_in) 1: illegal character: S
(standard_in) 1: illegal character: T
(standard_in) 1: illegal character: \303
(standard_in) 1: illegal character: \251
(standard_in) 1: syntax error
(standard_in) 1: illegal character: \303
(standard_in) 1: illegal character: \251
(standard_in) 1: illegal character: V
(standard_in) 1: illegal character: \303
(standard_in) 1: illegal character: \251
nicolasmintkde-desktop nicolasmintkde #
Si je comprends bien il aurait fallu écrire: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.
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