web-dev-qa-db-fra.com

Divisez deux variables en bash

J'essaie de diviser deux var en bash, voici ce que j'ai:

var1=3;
var2=4;

echo ($var1/$var2)

J'obtiens toujours une erreur de syntaxe. Quelqu'un sait-il ce qui ne va pas?

11

L'analyse du shell n'est utile que pour la division entière:

var1=8
var2=4
echo $((var1 / var2))

sortie: 2

à la place, votre exemple:

var1=3
var2=4
echo $((var1 / var2))

sortie: 0

il vaut mieux utiliser bc:

echo "scale=2 ; $var1 / $var2" | bc

sortie: .75

échelle est la précision requise

28
m47730

Il y a deux réponses possibles ici.

Pour effectuer une division entière, vous pouvez utiliser le Shell:

$ echo $(( var1 / var2 ))
0

La syntaxe $(( ... )) est connue sous le nom de expansion arithmétique.

Pour la division en virgule flottante, vous devez utiliser un autre outil, tel que bc:

$ bc <<<"scale=2; $var1 / $var2"
.75

L'instruction scale=2 Définit la précision de la sortie à 2 décimales.

8
Tom Fenech

Si vous voulez le faire sans bc, vous pouvez utiliser awk:

$ awk -v var1=3 -v var2=4 'BEGIN { print  ( var1 / var2 ) }'
0.75
3
rouble
#!/bin/bash
var1=10
var2=5
echo $((var1/var2))
0
Walter Wahlstedt