Estoy usando una terminal en serie para proporcionar información a nuestro experimento de laboratorio. Encontré que usando
$ echo "5X5"
solo devuelve una cadena de "5X5"
. ¿Existe un comando para ejecutar una operación de multiplicación?
fuente
Estoy usando una terminal en serie para proporcionar información a nuestro experimento de laboratorio. Encontré que usando
$ echo "5X5"
solo devuelve una cadena de "5X5"
. ¿Existe un comando para ejecutar una operación de multiplicación?
Sí, puede usar la expansión aritmética incorporada de bash$(( ))
para hacer algunas matemáticas simples
$ echo "$((5 * 5))"
25
Consulte la sección Aritmética de Shell en el Manual de referencia de Bash para obtener una lista completa de operadores.
En aras de la integridad, como señalaron otros, si necesita precisión arbitraria, bc
o dc
sería mejor.
Para matemáticas más avanzadas y precisas, considere usar bc (1).
echo "3 * 2.19" | bc -l
6.57
Bash admite la expansión aritmética con $(( expression ))
. Por ejemplo:
$ echo $(( 5 * 5 ))
25
Varias utilidades proporcionan aritmética, incluidas bc y expr .
$ echo '5 * 5' | /usr/bin/bc
25
$ /usr/bin/expr 5 \* 5
25
La solución clásica es:
expr 5 \* 5
Otra buena opción es:
echo 5 5\*p | dc
Ambas soluciones solo funcionarán con operandos enteros.
dc
funciona con flotadores. Pruebaecho '4 k 50 7 / p' | dc
. La salida es7.1428
. Elk
comando establece la precisión.k
. Ciertamente recuerdo que la precisión predeterminada es 0 (truncamiento a entero). ¿Estoy recordando mal o es simplemente que las implementaciones más recientes han cambiado el comportamiento?dc
raramente a lo largo de los años, ya que soy más algebraico y menos RPN, así que no lo recuerdo. En un sistema GNU que estoy usando, el valor predeterminado es 0. Un (1993) antigua FreeBSDman
página menciona siendo cero el valor por defecto, pero BSD más antiguasman
páginas no lo hacen.echo '4 k 50.5 7 / p' | dc
funciona (salida:)7.2142
.Una función de shell simple (no se necesita sed) debería hacer el truco de interpretar '5X5'
fuente
Utilizo esta función que usa
bc
y, por lo tanto, admite cálculos de punto flotante:Ejemplo:
La expansión aritmética de Bash no admite flotadores (pero Korn shell y zsh sí lo hacen).
Ejemplo:
fuente
Tengo un script simple que uso para esto:
me@mycomputer:~$ cat /usr/local/bin/c
Cambia
x
a*
ya que*
es un carácter especial en el shell. Úselo de la siguiente manera:c 5x5
c 5-4.2 + 1
c '(5 + 5) * 30'
(aún debe usar comillas si la expresión contiene paréntesis).fuente
tr
se puede utilizar para hacer mapeo de caracteres para varios personajes.Si te gusta Python y tienes la opción de instalar un paquete, puedes usar esta utilidad que hice.
fuente