web-dev-qa-db-fra.com

Comment diviser dans la console Linux?

Je dois des variables et je veux trouver la valeur de l'une divisée par l'autre. Quelles commandes dois-je utiliser pour ce faire?

70
kman99

Dans le shell bash, entourez les expressions arithmétiques de $(( ... ))

$ echo $(( 7 / 3 ))
2

Bien que je pense que vous êtes limité aux nombres entiers.

66
dave4420
echo 5/2 | bc -l

2.50000000000000000000

cette option '-l' dans 'bc' permet des résultats flottants

38
raytrace

Le meilleur moyen est d'utiliser "bc", une calculatrice de précision arbitraire.

variable=$(echo "OPTIONS; OPERATIONS" | bc)

ex:

my_var=$(echo "scale=5; $temp_var/100 + $temp_var2" | bc)

où "échelle = 5" est la précision.

man bc 

est livré avec plusieurs exemples d'utilisation.

16
user1504475

Vous pouvez utiliser awk qui est un utilitaire/langage conçu pour l'extraction de données

par exemple. pour 1,2/3,4

>echo 1.2 3.4 | awk '{ print $2/$1 }'
0.352941
11
jperrie

Je préfère toujours utiliser dc, qui est une calculatrice RPN, donc une session rapide pour diviser 67 par 18 avec une précision de 4 chiffres ressemblerait à

>dc
4k
67
18/p
3.7222
q
>

Evidemment, beaucoup plus disponible: man dc

11
libjack

En bash, si vous n'avez pas besoin de décimales dans votre division, vous pouvez faire:

>echo $((5+6))
11
>echo $((10/2))
5
>echo $((10/3))
3
8
Mark Rushakoff

Je suppose que par console Linux vous voulez dire Bash.

Si X et Y sont vos variables, $(($X / $Y)) renvoie ce que vous demandez.

5
Paolo Capriotti

Exemple de division entière utilisant bash pour diviser $ a par $ b:

echo $((a/b))
2
Draemon

Autre chose que vous pourriez faire en utilisant la réponse de raytrace. Vous pouvez utiliser la sortie standard d'un autre appel Shell à l'aide de raccourcis pour effectuer ensuite des calculs. Par exemple, je voulais connaître la taille des 100 premières lignes d'un couple de fichiers. La taille d'origine de wc -c est en octets, je veux connaître les kilo-octets. Voici ce que j'ai fait:

echo `cat * | head -n 100 | wc -c` / 1024 | bc -l
2
2upmedia

Vous devriez essayer d'utiliser:

echo "scale=4;$variablename/3"|bc
1
JADAV AKASH

vous pouvez également utiliser Perl -e

Perl -e 'print 67/8'
1
lsiebert