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 paradc
.
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