Meer
Hoe kan ik getallen toevoegen in een bash script
Ik heb dit bash script en ik had een probleem in regel 16. Hoe kan ik het vorige resultaat van regel 15 nemen en toevoegen het aan de variabele in regel 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
Voor gehele getallen:
Gebruik rekenkundige uitbreiding:
$((EXPR))
Gebruik de externe
expr
utility. Merk op dat dit alleen nodig is voor echt oude systemen.Voor drijvende komma:
Bash ondersteunt dit niet direct, maar er zijn een paar externe tools die je kunt gebruiken:
Je kunt ook wetenschappelijke notatie gebruiken (bijv.:
2.5e+2
)Gemeenschappelijke valkuilen:
Als je een variabele instelt, kun je geen spaties aan weerszijden van
=
hebben, anders wordt de shell gedwongen het eerste woord te interpreteren als de naam van de applicatie die moet worden uitgevoerd (bijv:num=
ofnum
)num= 1
num =2
bc
enexpr
verwachten elk getal en elke operator als een apart argument, dus witruimte is belangrijk. Ze kunnen geen argumenten als3+
+4
verwerken.num=`expr $num1+ $num2`
Gebruik de
$(( ))
rekenkundige uitbreiding.Zie http://tldp.org/LDP/abs/html/arithexp.html voor meer informatie.
Er zijn duizend-en-één manieren om het te doen. Hier's een met
dc
: