Calculs mathématiques en bash

Calculs mathématiques en bash

Bash est une puissante langue de script qui peut être utilisée pour une variété de tâches, y compris les calculs mathématiques. Cependant, travailler avec des nombres dans Bash peut être difficile, en particulier lorsqu'il s'agit de l'arithmétique à virgule flottante, de grands nombres et de calculs complexes.

Dans cet article, nous explorerons quelques conseils et astuces pour les calculs mathématiques dans Bash.

Utilisez le bon outil pour le travail

Bash a plusieurs outils intégrés pour effectuer des calculs mathématiques, tels que le (()) et $ (()) opérateurs, le expr commande, et le avant JC commande. Chaque outil a ses forces et ses faiblesses, et le choix du bon peut faire une grande différence en termes de performances et de précision.

  • Le '(())' et '$ (())' Les opérateurs sont les outils les plus couramment utilisés pour effectuer l'arithmétique entier dans Bash. Ils soutiennent toutes les opérations arithmétiques de base, ainsi que les opérations et comparaisons bit. Cependant, ils ne prennent pas en charge l'arithmétique à virgule flottante, et leur précision est limitée à la taille du type entier sur votre système.
  • Le 'expr' La commande est un outil plus puissant qui prend en charge l'arithmétique à virgule flottante, ainsi que les opérations de chaîne et les expressions régulières. Cependant, il est plus lent que les opérateurs (()) et $ (()), et sa sortie doit être capturée en utilisant la substitution de commande.
  • Le 'avant JC La commande est l'outil le plus polyvalent pour effectuer des calculs mathématiques dans Bash. Il prend en charge l'arithmétique arbitraire, les nombres complexes et les fonctions avancées, telles que les fonctions trigonométriques et logarithmiques. Cependant, il nécessite un processus distinct pour être lancé, ce qui peut ralentir votre script.

Opérations arithmétiques

Bash fournit des opérations arithmétiques de base comme l'addition, la soustraction, la multiplication et la division. Ces opérations peuvent être effectuées en utilisant la syntaxe d'extension arithmétique $ ((expression)). Par exemple, la commande suivante ajoutera 3 et 4:

Echo $ ((3 + 4))
1Echo $ ((3 + 4))

Ce sera sorti 7.

De même, nous pouvons effectuer d'autres opérations arithmétiques comme la soustraction, la multiplication et la division:

echo $ ((6 - 2)) echo $ ((4 * 5)) echo $ ((12/3))
123echo $ ((6 - 2)) echo $ ((4 * 5)) echo $ ((12/3))

Ce sera sorti 4, 20, et 4, respectivement.

Variables et opérations mathématiques

Nous pouvons également utiliser des variables dans nos calculs mathématiques. Par exemple:

a = 5 b = 2 echo $ ((a + b))
123a = 5b = 2echo $ ((a + b))

Ce sera sorti 7.

Nous pouvons également effectuer des opérations sur les variables elles-mêmes, comme ceci:

a = 5 b = 2 echo $ ((a * = b))
123a = 5b = 2echo $ ((a * = b))

Ce sera sorti dix. La variable A a maintenant une valeur de 10 après avoir été multipliée par B.

Opérations mathématiques à virgule flottante

Bash ne prend pas en charge nativement les opérations mathématiques à virgule flottante, mais nous pouvons utiliser des outils externes comme BC et AWK pour effectuer ces calculs.

'avant JC' est une calculatrice de ligne de commande qui prend en charge la précision arbitraire. Nous pouvons l'utiliser pour effectuer des calculs à virgule flottante comme ceci:

Echo "échelle = 2; 10/3" | avant JC
1Echo "échelle = 2; 10/3" | avant JC

Ce sera sorti 3.33.

AWK est un puissant outil de traitement du texte qui prend également en charge les opérations mathématiques. Nous pouvons l'utiliser pour effectuer des calculs à virgule flottante comme ceci:

Echo "10.5 2.5 "| awk 'printf"%.2f \ n ", $ $ / $ 2 '
1Echo "10.5 2.5 "| awk 'printf"%.2f \ n ", $ $ / $ 2 '

Ce sera sorti 4.20.

Utiliser des fonctions pour simplifier les calculs complexes

Lorsque vous travaillez avec des calculs complexes dans Bash, il est souvent utile de les décomposer en fonctions plus petites et plus gérables. Les fonctions vous permettent d'encapsuler un bloc de code et de la réutiliser plusieurs fois dans votre script, ce qui peut rendre votre code plus modulaire et plus facile à comprendre.

Par exemple, disons que vous souhaitez calculer la zone d'un cercle, étant donné son rayon. Vous pouvez créer une fonction appelée "Calculer_area" Cela prend le rayon comme argument et renvoie la zone:

#!/ bac / bash pi = 3.14159 Calculate_area () Radius local = 1 $ Zone locale = $ (echo "$ pi * $ radius * $ radius" | bc) echo $ superfile radius = 5 zone = $ (calcul_area $ radius) echo "La zone d'un cercle avec RADIUS $ RADIUS est une zone $ "
12345678910111213#!/ bac / bash pi = 3.14159 Calculate_area () Radius local = 1 $ zone locale = $ (echo "$ pi * $ radius * $ radius" | bc) echo $ superfile radius = 5area = $ (calcul_area $ radius) echo "la zone d'un cercle avec un cercle avec rayon $ radius est $ aire "

Ce script définit une fonction appelée calcul_area qui prend le rayon comme un argument, calcule la zone à l'aide de la formule A = πr ^ 2, et renvoie le résultat. La partie principale du script appelle ensuite la fonction avec un rayon de 5, capture la sortie en utilisant la substitution de commande et imprime le résultat à l'écran.

Utilisez des instructions conditionnelles pour la gestion des erreurs

Lorsque vous effectuez des calculs mathématiques dans BASH, il est important de gérer gracieusement les erreurs, en particulier lors de la gestion de la saisie des utilisateurs ou des sources de données externes. Une façon de le faire est d'utiliser des instructions conditionnelles pour vérifier les erreurs et fournir des commentaires à l'utilisateur.

Par exemple, disons que vous souhaitez calculer le factoriel d'un nombre, donné comme entrée utilisateur. Vous pouvez créer un script qui utilise une boucle pour calculer le factoriel et une instruction conditionnelle pour vérifier les erreurs:

#!/ bin / bash read -p "Entrez un nombre:" num si ! [["$ num" = ~ ^ [0-9] + $]]; alors echo "Erreur: '$ num' n'est pas un entier valide" exit 1 fi factorial = 1 pour ((i = 1; i<=$num; i++)); do factorial=$(expr "$factorial * $i") done echo "The factorial of $num is $factorial"
123456789101112131415#!/ bin / bash read -p "Entrez un nombre:" num si ! [["$ num" = ~ ^ [0-9] + $]]; alors echo "Erreur: '$ num' n'est pas un entier valide" exit 1fi factorial = 1for ((i = 1; i<=$num; i++)); do factorial=$(expr "$factorial * $i")done echo "The factorial of $num is $factorial"

Ce script lit un numéro de l'utilisateur à l'aide de la commande de lecture et utilise une instruction conditionnelle pour vérifier si l'entrée est un entier valide. Si l'entrée n'est pas valide, le script imprime un message d'erreur et sort avec un code d'état non nul. Si l'entrée est valide, le script utilise une boucle pour calculer le factoriel et imprime le résultat à l'écran.

Conclusion

Dans cet article, nous avons exploré comment effectuer des calculs mathématiques dans Bash. Nous avons appris à utiliser des opérations arithmétiques de base, des variables et des outils externes comme avant JC et awk Pour effectuer des opérations mathématiques en bash. Avec ces outils à notre disposition, nous pouvons effectuer une variété de calculs mathématiques dans Bash, de l'arithmétique de base aux opérations plus complexes.