DoctorStrangeha scritto:Prima di ogni cosa tutti sanno che non si può dividere per zero, e cont lo hai proprio inizializzato a zero.
oltre questo, tieni presente che bash è in grado di gestire solo cifre intere, quindi la divisione rischi di generare spesso errori inattesi. Dovrai servirti di una pipe con "bc". Almeno io faccio così.
Saluti.
media=somma/cont | bc -l
DoctorStrangeha scritto:Potresti cortesemente postare il riferimento dove hai preso il riferimento ad una divisione per zero? Comunque tanto per cominciare inizializza cont ad 1, e poi cambia la riga della divisione in questo modo:
e vedi se ottieni una lettura utile.
- Codice: Seleziona tutto
media=somma/cont | bc -l
progetto10 15 / 3
raiha scritto:Ciao kaay90, e benvenut* tanto per cominciare (hai messo sesso femminile ma ti declini al maschile
)
Il primo problema che devi risolvere è che lo script che hai postato richiede di essere eseguito con due parametri: se tu scrivi
- Codice: Seleziona tutto
progetto10 15 / 3
stai eseguendo lo script chiamato progetto10 con tre parametri: il 15 lo / e il 3
inoltre si capisce che lo script non si aspetta di avere passati due numeri come parametri.
$1 (che è il primo parametro) è il pattern che deve essere estratto da $2 (il secondo parametro, probabilmente un file multiriga)
Queste cose devi saperle tu leggendo la documentazione dell'esercizio
Questo è il motivo della divisione per zero: dato che la variabile qta resta nulla, il ciclo for non viene eseguito nemmeno una volta e quindi cont rimane sempre == 0
Le altre cose vengono dopo
102 34 56 78 12
23 485 12 67 89
23 45 00 32 12 987
1 22 345
PROGETTO 10
Esempi di shell script
Creare con l’editor un file contenente per ogni riga due campi, codice articolo e
quantità venduta, separati dal carattere di tabulazione: ci possono essere vendite
diverse anche per lo stesso articolo. Costruire lo shell script che accetta come
argomenti il codice articolo e il nome del file e restituisce la media della quantità
venduta dell’articolo richiesto.
- Codice: Seleziona tutto
#!/bin/bash
# vendite
somma=0
cont=0
declare media
for qta in `grep $1 $2 | cut -f2`
do
let somma+=qta
let cont+=1
done
let media=somma/cont
echo "media articolo $1 = $media"
Per l’esecuzione occorre fornire, oltre al nome dello script, anche due argomenti: il codice
articolo prefissato e il nome del file che contiene i dati; questi argomenti verranno associati
rispettivamente a $1 e $2 (variabili posizionali).
Visualizzano questa sezione: 0 utenti registrati e 5 ospiti