fracarro
21-07-2006, 09:26
Salve ragazzi. Ho un problemino nella creazione di uno script bash per il calcolo della media di alcuni valori restituiti da un programma. Mi spiego meglio. Io dovrei lanciare n_iter volte un programma e ogni volta "prelevare" dal suo output un valore, sommarlo a quelli precedenti e alla fine fare la divisione per n_iter. Io ho scritto il seguente script:
#!/bin/bash
n_iter=5
counter=0
media=0
x=0
while [ $counter -lt $n_iter ]
do
counter=`expr $counter + 1`
x=`./dikh <input_file -p 50 | egrep Running | awk '{printf ($6"\n")}'`
echo "x=" $x
media=`expr $media + $x`
done
media=`expr $media / $n_iter`
Il problema che mi da deriva dal fatto che quando estraggo il valore del risultato dallo standard output tramite la grep e l'awk e lo salvo nella variabile x quest'ultima viene considerata come una stringa e di conseguenza la successiva operazione media=`expr $media + $x`mi restituisce un errore perchè i parametri non sono numerici. C'è un modo per convertire la stringa in numero tipo con la funzione atoi del C? Oppure c'è un modo migliore per prelevare direttamente come un numero il valore dell'output del programma? ( Per la cronaca l'output viene scritto in questo modo " Running time of SP computation: 12.33 " e a me servirebbe salvare in x il 12.33 in formato numerico ). Grazie per l'aiuto.
#!/bin/bash
n_iter=5
counter=0
media=0
x=0
while [ $counter -lt $n_iter ]
do
counter=`expr $counter + 1`
x=`./dikh <input_file -p 50 | egrep Running | awk '{printf ($6"\n")}'`
echo "x=" $x
media=`expr $media + $x`
done
media=`expr $media / $n_iter`
Il problema che mi da deriva dal fatto che quando estraggo il valore del risultato dallo standard output tramite la grep e l'awk e lo salvo nella variabile x quest'ultima viene considerata come una stringa e di conseguenza la successiva operazione media=`expr $media + $x`mi restituisce un errore perchè i parametri non sono numerici. C'è un modo per convertire la stringa in numero tipo con la funzione atoi del C? Oppure c'è un modo migliore per prelevare direttamente come un numero il valore dell'output del programma? ( Per la cronaca l'output viene scritto in questo modo " Running time of SP computation: 12.33 " e a me servirebbe salvare in x il 12.33 in formato numerico ). Grazie per l'aiuto.