2010-10-08 6 views

Répondre

19

Vous pouvez faire:

let var=10**2 # sets var to 100. 

ou encore mieux et recommandé ainsi:

var=$((10**2)) # sets var to 100. 

Si vous voulez imprimer l'expression résultat que vous pouvez faire:

echo $((10**2)) # prints 100. 

Pour grands nombres, vous pouvez utiliser l'opérateur d'exponentiation de bc comme:

bash:$ echo 2^100 | bc 
1267650600228229401496703205376 

Si vous voulez stocker le résultat ci-dessus dans une variable que vous pouvez à nouveau utiliser la syntaxe $(()) comme:

var=$((echo 2^100 | bc)) 
+0

Au lieu de '$ ((...))' il est également possible d'utiliser '$ [...]'. Je trouve ce dernier plus visuellement plus attrayant mais c'est juste mon goût. Je ne sais pas s'il y a des différences entre les deux, cependant. Il semble qu'ils se comportent de la même manière. – DarkDust

+0

Alberto: toutes ces parenthèses, let et $ sont nécessaires parce que bash, étant un simple interpréteur en ligne de commande, fait mieux de supposer que tout est une chaîne et devrait être traité comme tel, sauf indication contraire explicite. Saludos! – slezica

4

diverses façons

Bash

x=2 
echo $((x**2)) 

Awk

awk 'BEGIN{print 2**2}' 

bc

echo "2^2" |bc 

dc

dc -e '2 2^p' 
0

En fait var=$((echo 2^100 | bc)) ne fonctionne pas - bash essaie de faire des mathématiques à l'intérieur (()). Mais une séquence de ligne de commande est là à la place de sorte qu'il crée une erreur

var=$(echo 2^100 | bc) fonctionne comme la valeur est le résultat de la ligne de commande exécutant l'intérieur ()

Questions connexes