Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 03/03/2010, à 23:23

n3o51

calcule avec bash

Bonsoir je voudrais savoir si une opération soit possible en bash
de cette façon

resultat=racine($1)*$2

ou dites moi si c'est peine perdu smile

Merci a vous


Welcome to the real world
________________________________

Hors ligne

#2 Le 03/03/2010, à 23:28

wido

Re : calcule avec bash

Bonjour,

resultat=$(( $1 * $2 ))

EDIT: content j'ai posté le 1er pour une réponse qui n'est pas de mon niveau big_smile

Dernière modification par wido (Le 03/03/2010, à 23:29)

Hors ligne

#3 Le 03/03/2010, à 23:40

n3o51

Re : calcule avec bash

Oo j'ai peur que ça ne marche pas cela va simplement faire une multiplication non ?

moi je voudrais que resultat soit racine carré de $1 * ensuite multiplié par  $2

resutat=racine(100)*2
echo $resultat
affiche 20

EDIT : j'ai testé un script avec ce que tu donne

./racine.sh 100 2


m'affiche rien smile

Dernière modification par n3o51 (Le 03/03/2010, à 23:47)


Welcome to the real world
________________________________

Hors ligne

#4 Le 03/03/2010, à 23:55

HP

Re : calcule avec bash

n3o51 a écrit :

EDIT : j'ai testé un script avec ce que tu donne […] m'affiche rien smile

si, si (si on lui demande d'afficher, il affiche) :

# function multi() { echo $(( $1 * $2 )); }
# multi 2 4
8

pour la racine carrée, c'est à peine plus compliqé :

# function sqrt() { echo -e "sqrt($1)\nquit\n" | bc -q -i; }
# sqrt 4
2

et ta solution, pourrais ressembler à çà, en mixant les deux :

# function mix() { echo $(( $(sqrt $1) * $2 )); }
# mix 9 2
6
# mix 4 3
6

Mais, évidemment, si on utilise bash dans les opération, on perd en précision, puisque bash ne sait gérer que les entiers (comme chacun le sait)…

# mix 3 2
2

alors que le résultat devrait approcher 3,464101615 ;
en effet, pour bash la racine carrée de 3 ne vaut que 1, au lieu de 1.732050808 !

Dernière modification par HP (Le 04/03/2010, à 00:11)


cat /dev/urandom >/dev/null 2>&1 #github

Hors ligne

#5 Le 04/03/2010, à 00:05

wido

Re : calcule avec bash

je n'avais pas vu la racine lol

Hors ligne

#6 Le 04/03/2010, à 00:10

n3o51

Re : calcule avec bash

Bonsoir merci a vous deux mais dans mon script bash j'ai droit a

./racine.sh: line 3: sqrt : commande introuvable
./racine.sh: line 3: * 2 : erreur de syntaxe : opérande attendue (error token is "* 2 ")

je vois pas !!!


Welcome to the real world
________________________________

Hors ligne

#7 Le 04/03/2010, à 00:17

n3o51

Re : calcule avec bash

oui j'avais pas vu ton nouvelle edit HP alors cela ne fonctionnera pas

car je peut avoir $1 qui vaut 974 par exemple donc racine de 974x2=62,417946137


Sinon pour mon info personnel je voudrais savoir pourquoi ça ne passe pas quel paquet faut-il installé pour sqrt et c'est quoi ce token ?

Merci quand même , il va falloir trouvé une solution alternative

Dernière modification par n3o51 (Le 04/03/2010, à 00:19)


Welcome to the real world
________________________________

Hors ligne

#8 Le 04/03/2010, à 00:26

nesthib

Re : calcule avec bash

^^ faut pas recopier bêtement sans essayer de comprendre tongue relis bien le post de HP, il définit d'abord une fonction sqrt…
pour ton message, de toute évidence ta commande sqrt n'existe pas (plantage) donc rien n'est retourné et comme bash essaie de faire l'opération (  * 2) → replantage

un exemple un poil plus propre pour les calculs non entiers (pas de echo ni pipe) :

bc -l <<<"(1+sqrt(5))/2"

GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#9 Le 04/03/2010, à 00:29

HP

Re : calcule avec bash

nesthib a écrit :

^^ faut pas recopier bêtement sans essayer de comprendre tongue

Je crois que c'est çà le plus gros souci ! wink


cat /dev/urandom >/dev/null 2>&1 #github

Hors ligne

#10 Le 04/03/2010, à 00:34

n3o51

Re : calcule avec bash

Effectivement je me suis trompé dans mes fichiers de test et dans celui testé je n'avait pas definit ma fonction, mais étant donné que Bash n'utilise pas les nombres a virgule cela ne résoudra pas mon soucis merci a vous pour le complément d'informations.

Dernière modification par n3o51 (Le 04/03/2010, à 00:34)


Welcome to the real world
________________________________

Hors ligne

#11 Le 04/03/2010, à 00:53

uboops

Re : calcule avec bash

Si ça peut marcher car:

...en effet, pour bash la racine carrée de 3 ne vaut que 1, au lieu de 1.732050808 !

comme ca:

bc -l <<<"(sqrt(3))"
1.73205080756887729352

Ou en jonglant un peu et en mettant un nombre de 0 paire, il est possible d'obtenir le résultat, par exemple (3 et 20 zéro):

function sqrt() { echo -e "sqrt($1)\nquit\n" | bc -q -i; }
sqrt 300000000000000000000
sqrt(300000000000000000000)
17320508075
-->donc le résultat est: 1.7320508075

(3 et 60 zéro) pour encore plus de présision:

sqrt 3000000000000000000000000000000000000000000000000000000000000
sqrt(3000000000000000000000000000000000000000000000000000000000000)
1732050807568877293527446341505
-->donc le résultat est: 1.732050807568877293527446341505

etc...

Dernière modification par uboops (Le 04/03/2010, à 01:08)


“Au lieu de faire que ce qui fût juste fût fort, on a fait que ce qui fût fort fût juste.” (Blaise Pascal).

Hors ligne

#12 Le 04/03/2010, à 00:59

JB-home

Re : calcule avec bash

le nombre doit être la partie entière du résultat

je n'arrive pas non plus a un résultat correct hmm

Hors ligne

#13 Le 04/03/2010, à 02:44

JB-home

Re : calcule avec bash

grâce à vous j'ai enfin réussi lol


voilà le script ( jme suis peut être compliqué la tache ) :

#!/bin/bash

wget --load-cookies cookies.txt --output-document=1.html "http://www.newbiecontest.org/epreuves/prog/prog3_1.php"
var1=`cut -c32-35 1.html`

wget --load-cookies cookies.txt --output-document=2.html "http://www.newbiecontest.org/epreuves/prog/prog3_2.php"
var2=`cut -c32-35 2.html`

echo $var1 et $var2

function sqrt() { echo -e "sqrt($var1) * $var2" | bc -q -i; }
sqrt >3.txt

result=`tail -1 3.txt`

firefox http://www.newbiecontest.org/epreuves/prog/verifpr3.php?solution=$result

Dernière modification par z0rg> (Le 04/03/2010, à 02:46)

Hors ligne

#14 Le 04/03/2010, à 08:35

nesthib

Re : calcule avec bash

[résolu] ?


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#15 Le 04/03/2010, à 09:51

Alambique

Re : calcule avec bash

calc -p -- "ton calcul"

Mal-pensant, mais résolument linuxien.

Hors ligne

#16 Le 04/03/2010, à 13:08

JB-home

Re : calcule avec bash

nesthib a écrit :

[résolu] ?

quand n3o51 passera par là, il le mettra en résolu wink

Dernière modification par z0rg> (Le 04/03/2010, à 13:08)

Hors ligne