2010-10-08 18 views

Respuesta

19

Usted puede hacer:

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

o incluso mejor y recomendado manera:

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

Si sólo desea imprimir la expresión resultado que puede hacer:

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

Para En grandes cantidades, es posible que desee utilizar el operador de exponenciación de bc como:

bash:$ echo 2^100 | bc 
1267650600228229401496703205376 

Si desea almacenar el resultado anterior en una variable que se puede volver a utilizar la sintaxis $(()) como:

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

En lugar de '$ ((...))' es también es posible usar '$ [...]'. Me parece que lo último es visualmente más atractivo, pero ese es solo mi gusto. Sin embargo, no sé si hay alguna diferencia entre los dos. Parece que se comportan igual. – DarkDust

+0

Alberto: todos estos paréntesis, deja y $ son necesarios porque bash, siendo un simple intérprete de línea de comandos, lo hace mejor asumiendo que todo es una cadena y debe tratarse como tal, a menos que se indique explícitamente lo contrario. Saludos! – slezica

4

diversas maneras

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 realidad var=$((echo 2^100 | bc)) no funciona - fiesta está tratando de hacer matemáticas en el interior (()). Sin embargo, una secuencia de línea de comandos es allí en su lugar por lo que crea un error

var=$(echo 2^100 | bc) obras como el valor es el resultado de la ejecución de la línea de comandos en el interior ()

Cuestiones relacionadas