Détails
Comment ajouter des chiffres dans un script bash ?
J'ai ce script bash et j'ai eu un problème à la ligne 16. Comment puis-je prendre le résultat précédent de la ligne 15 et l'ajouter à la variable de la ligne 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
Pour les entiers :
Utilisez [l'expansion arithmétique][1] :
$((EXPR))
Utilisation de l'utilitaire externe
expr
. Notez que ceci n'est nécessaire que pour les très vieux systèmes.Pour la virgule flottante :
Bash ne le prend pas directement en charge, mais il existe quelques outils externes que vous pouvez utiliser :
Vous pouvez également utiliser la notation scientifique (par exemple :
2.5e+2
)Ecueils courants :
Lorsque vous définissez une variable, vous ne pouvez pas avoir d'espace de part et d'autre de
=
, sinon cela forcera le shell à interpréter le premier mot comme le nom de l'application à exécuter (ex :num=
ounum
).num= 1
num =2
bc
etexpr
attendent chaque nombre et opérateur comme un argument séparé, donc l'espacement est important. Ils ne peuvent pas traiter des arguments comme3+
+4
.num=`expr $num1+ $num2`
[1] : http://tldp.org/LDP/abs/html/arithexp.html
Utilisez l'expansion arithmétique
$(( ))
.Voir http://tldp.org/LDP/abs/html/arithexp.html pour plus d'informations.
Il y a mille et une façons de le faire. En voici une qui utilise
dc
: