Recherche…
Math utilisant dc
dc
est l'une des plus anciennes langues sur Unix.
Il utilise la notation polonaise inversée , ce qui signifie que vous empilez d'abord des nombres, puis des opérations. Par exemple 1+1
est écrit comme 1 1+
.
Pour imprimer un élément depuis le haut de la pile, utilisez la commande p
echo '2 3 + p' | dc
5
or
dc <<< '2 3 + p'
5
Vous pouvez imprimer l'élément supérieur plusieurs fois
dc <<< '1 1 + p 2 + p'
2
4
Pour les nombres négatifs, utilisez _
préfixe
dc <<< '_1 p'
-1
Vous pouvez également utiliser des lettres majuscules de A to F
pour les nombres compris entre 10 and 15
et .
comme point décimal
dc <<< 'A.4 p'
10.4
dc
utilise une précision différente, ce qui signifie que la précision est limitée uniquement par la mémoire disponible. Par défaut, la précision est définie sur 0 décimale
dc <<< '4 3 / p'
1
Nous pouvons augmenter la précision en utilisant la commande k
. 2k
utilisera
dc <<< '2k 4 3 / p'
1.33
dc <<< '4k 4 3 / p'
1.3333
Vous pouvez également l'utiliser sur plusieurs lignes
dc << EOF
1 1 +
3 *
p
EOF
6
bc
est un préprocesseur pourdc
.
Math utilisant bc
bc
est un langage de calcul arbitraire de précision. Il pourrait être utilisé de manière interactive ou être exécuté à partir de la ligne de commande.
Par exemple, il peut imprimer le résultat d'une expression:
echo '2 + 3' | bc
5
echo '12 / 5' | bc
2
Pour l'arithmétique flottante, vous pouvez importer la bibliothèque standard bc -l
:
echo '12 / 5' | bc -l
2.40000000000000000000
Il peut être utilisé pour comparer des expressions:
echo '8 > 5' | bc
1
echo '10 == 11' | bc
0
echo '10 == 10 && 8 > 3' | bc
1
Math utilisant les capacités de bash
Le calcul arithmétique peut également être effectué sans impliquer d’autres programmes comme celui-ci:
Multiplication:
echo $((5 * 2))
10
Division:
echo $((5 / 2))
2
Modulo:
echo $((5 % 2))
1
Exponentiation:
echo $((5 ** 2))
25
Math utilisant expr
expr
ou Evaluate expressions
évalue une expression et écrit le résultat sur une sortie standard
Arithmétique de base
expr 2 + 3
5
En multipliant, vous devez échapper au signe *
expr 2 \* 3
6
Vous pouvez également utiliser des variables
a=2
expr $a + 3
5
Gardez à l'esprit qu'il ne supporte que les entiers, donc l'expression comme ça
expr 3.0 / 2
va lancer une erreur expr: not a decimal number: '3.0'
.
Il prend en charge les expressions régulières pour faire correspondre les modèles
expr 'Hello World' : 'Hell\(.*\)rld'
o Wo
Ou trouvez l'index du premier caractère dans la chaîne de recherche
Cela produira
expr: syntax error
sous Mac OS X , car elle utilise BSD expr qui n’a pas la commande index, alors que expr sous Linux est généralement GNU expr
expr index hello l
3
expr index 'hello' 'lo'
3