Script

-  
salut tout le monde!je veux faire un script shell qui fait la resolution d'une equation de deuxième degré dont les facteurs sont fourni en paramétres!j'ai essayé ce script :

#!/bin/bash
clear
function resoudre()
{
let a=$2**2-4*$1*$3
let d=2*$1
if [ $a -lt 0 ]
then
echo "cet equation n'a pas de solutions"
fi
if [ $a -gt 0 ]
then
let b=-$2+$(echo "sqrt($a)" | bc )
let c=-$2-$(echo "sqrt($a)" | bc )
#let x=$(echo "scale=2 $b/$d" | bc )
echo "$b et $c"
x='bc <<fin
scale=2
$b/$d
fin'
echo $x
y='bc <<fin
scale=2
$c/$d
fin'
echo " les resolutions de cet equation sont :"
echo "$x and $y"
fi
if [ $a -eq 0 ]
then
let x=-$2/$d
echo "cet equation a une seule solution qui est : $x"
fi
}
#ici on appelle la fonction
echo "etnrez les facteurs de votre equation : "
read var1 var2 var3
resoudre $var1 $var2 $var3

et voila le resultat:

etnrez les facteurs de votre equation :
2 4 1
-2 et -6
./fonction2d: line 23: warning: here-document at line 20 delimited by end-of-file (wanted 'fin')
-.50 0
./fonction2d: line 28: warning: here-document at line 25 delimited by end-of-file (wanted 'fin')
les resolutions de cet equation sont :
-.50
0 and -1.50
0

S.O.S s'il vous plait

4 réponses

  1. sos
    0
    1. salut,

      deux choses:
      - mets le backtick après fin à la ligne: le shell ne lit pas fin, mais fin'
      - bash a des here-string (<<<), c'est très pratique dans ce cas
      var=$(bc <<<"scale=2; $b/$d")
      0
      1. bonsoir
        merci beaucoup
        ça a trés bien marché
        0
        1. merci qqchquicommenceparQ
          la ligne var=$(bc <<<"scale=2; $b/$d") a très bien marché
          0