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?
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
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.
Si vous voulez le faire sans bc, vous pouvez utiliser awk:
$ awk -v var1=3 -v var2=4 'BEGIN { print ( var1 / var2 ) }'
0.75
#!/bin/bash
var1=10
var2=5
echo $((var1/var2))