echo 3+3
¿Cómo puedo evaluar tales expresiones en Bash, en este caso en 6?Bash: evaluar un término matemático?
echo 3+3
¿Cómo puedo evaluar tales expresiones en Bash, en este caso en 6?Bash: evaluar un término matemático?
en shells como zsh/ksh, puedes usar flotadores para las matemáticas Si necesita más potencia de las matemáticas, utilizar herramientas como bc/awk/dc
por ejemplo
var=$(echo "scale=2;3.4+43.1" | bc)
var=$(awk 'BEGIN{print 3.4*43.1}')
mirar lo que está intentando hacer
awk '{printf "%.2f\n",$0/59.5}' ball_dropping_times >bull_velocities
montón de maneras - más portátil es utilizar el comando expr:
expr 3 + 3
echo $((3+3))
uso puede hacer uso del comando expr como:
expr 3 + 3
para almacenar el resultado en una variable que puede hacer:
sum=$(expr 3 + 3)
o
sum=`expr 3 + 3`
Me gustaría agregar (ya que esta publicación es aparentemente para principiantes de Unix) que los backticks en la última línea son para que el shell evalúe 'epr 3 + 3' antes de que se asigne la suma. –
expr
es la manera estándar, pero sólo maneja números enteros.
golpe tiene un par de extensiones, que sólo manejar números enteros, así:
$((3+3)) returns 6
((3+3)) used in conditionals, returns 0 for true (non-zero) and 1 for false
let 3+3 same as (())
let
y (())
puede utilizarse para asignar valores de, por ejemplo,
let a=3+3
((a=3+3))
de punto flotante puede utilizar bc
eco 3 + 3 | bc
resueltos gracias a Dennis, un ejemplo de BC-uso:
$ cat calc_velo.sh
#!/bin/bash
for i in `cat ball_dropping_times`
do
echo "scale=20; $i/59.5" | bc
done > ball_velocities
pon esto en tu pregunta. también, puedes usar un solo comando awk. Analiza archivos y se encarga de las matemáticas decimales. ver mi respuesta – ghostdog74
Está utilizando el operador de redirección '>' que trunca (sobrescribe) el archivo de destino cada vez. Cámbialo al operador anexar '>>' o coloca la redirección después del 'done' en lugar de después del' bc' como este: 'done> ball_velocities'. –
creo que el método ((3 + 3)) es la más rápida, ya que está interpretado por el shell en lugar de un binario externo. cronometra un bucle grande usando todos los métodos sugeridos para el más eficiente.
* Los procesos de nix están diseñados para ser extremadamente livianos y rápidos por exactamente esta razón. Por lo tanto, el uso de binarios externos no es tan lento teniendo en cuenta el rendimiento general de los scripts de los usos comunes. – SkyDan
Elegante, gracias. – hhh
alguna idea sobre un signo de comentario para AWk? ¿Si deseo tener un formato explícitamente establecido para mis medidas? Leer solo las columnas puede ser confuso. – hhh
no entiendo. muestre lo que quiere decir con ejemplos en su pregunta – ghostdog74