Cómo puedo añadir números en un script bash
Tengo este script bash y he tenido un problema en la línea 16. ¿Cómo puedo tomar el resultado anterior de la línea 15 y añadirlo a la variable de la línea 16?
#!/bin/bash
num=0
metab=0
for ((i=1; i<=2; i++)); do
for j in `ls output-$i-*`; do
echo "$j"
metab=$(cat $j|grep EndBuffer|awk '{sum+=$2} END { print sum/120}') (line15)
num= $num + $metab (line16)
done
echo "$num"
done
522
3
Para los enteros:
Utilice expansión aritmética:
$((EXPR))
Usando la utilidad externa
expr
. Tenga en cuenta que esto sólo es necesario para los sistemas realmente antiguos.Para punto flotante:
Bash no lo soporta directamente, pero hay un par de herramientas externas que puedes usar:
También puedes utilizar la notación científica (por ejemplo:
2.5e+2
)Trampas comunes:
Cuando se establece una variable, no puede haber espacios en blanco a ambos lados de
=
, de lo contrario se forzará al shell a interpretar la primera palabra como el nombre de la aplicación a ejecutar (ej.:num=
onum
)num= 1
num =2
bc
yexpr
esperan cada número y operador como un argumento separado, por lo que los espacios en blanco son importantes. No pueden procesar argumentos como3+
+4
.num=`expr $num1+ $num2`
Utilice la expansión aritmética
$(( ))
.Consulte http://tldp.org/LDP/abs/html/arithexp.html para obtener más información.
Hay mil y una formas de hacerlo. Aquí'hay una usando
dc
: