Buscar..


Matemáticas usando dc

dc es uno de los lenguajes más antiguos en Unix.

Está utilizando la notación de pulido inverso , lo que significa que primero apila números y luego operaciones. Por ejemplo, 1+1 se escribe como 1 1+ .

Para imprimir un elemento desde la parte superior de la pila, use el comando p

echo '2 3 + p' | dc
5

or

dc <<< '2 3 + p'
5

Puedes imprimir el elemento superior muchas veces

dc <<< '1 1 + p 2 + p'
2
4

Para números negativos usa el prefijo _

dc <<< '_1 p'
-1

También puede usar letras mayúsculas de la A to F para los números entre 10 and 15 y . como punto decimal

dc <<< 'A.4 p'
10.4

dc utiliza una precisión máxima, lo que significa que la precisión solo está limitada por la memoria disponible. Por defecto, la precisión se establece en 0 decimales.

dc <<< '4 3 / p'
1

Podemos aumentar la precisión utilizando el comando k . 2k utilizará

dc <<< '2k 4 3 / p'
1.33

dc <<< '4k 4 3 / p'
1.3333

También puedes usarlo sobre múltiples líneas.

dc << EOF
1 1 +
3 *
p
EOF
6

bc es un preprocesador para dc .

Matemáticas usando bc

bc es un lenguaje de calculadora de precisión arbitraria. Se puede usar de forma interactiva o ejecutarse desde la línea de comandos.

Por ejemplo, puede imprimir el resultado de una expresión:

echo '2 + 3' | bc
5

echo '12 / 5' | bc
2

Para la aritmética de publicaciones flotantes, puede importar la biblioteca estándar bc -l :

echo '12 / 5' | bc -l
2.40000000000000000000

Se puede utilizar para comparar expresiones:

echo '8 > 5' | bc
1

echo '10 == 11' | bc
0

echo '10 == 10 && 8 > 3' | bc
1

Matemáticas usando las capacidades de bash

El cálculo aritmético también se puede realizar sin involucrar ningún otro programa como este:

Multiplicación:

echo $((5 * 2))
10

División:

echo $((5 / 2))
2

Modulo

echo $((5 % 2))
1

Exposiciónción:

echo $((5 ** 2))
25

Matemáticas usando expr

expr Evaluate expressions expr o Evaluate expressions evalúan una expresión y escriben el resultado en la salida estándar

Aritmética básica

expr 2 + 3
5

Al multiplicar, necesitas escapar del signo *

expr 2 \* 3
6

También puedes utilizar variables.

a=2
expr $a + 3
5

Tenga en cuenta que solo admite enteros, por lo que una expresión como esta

expr 3.0 / 2

arrojará un error expr: not a decimal number: '3.0' .

Es compatible con la expresión regular para que coincida con los patrones

expr 'Hello World' : 'Hell\(.*\)rld'
o Wo

O encuentra el índice del primer char en la cadena de búsqueda

Esto generará el expr: syntax error en Mac OS X , porque usa BSD expr que no tiene el comando de índice, mientras que expr en Linux es generalmente GNU expr

expr index hello l
3

expr index 'hello' 'lo'
3


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow