Sto cercando di ottenere un numero float da questo:numero galleggiante guscio in espr
totalmark=$(expr $sum/$subjects)
È corretto?
Sto cercando di ottenere un numero float da questo:numero galleggiante guscio in espr
totalmark=$(expr $sum/$subjects)
È corretto?
bash non supporta galleggianti, uso awk o BC/dc
esempio awk
totalmark=$(awk 'BEGIN{print $sum/$subjects}')
o BC
totalmark=$(echo "scale=2;$sum/$subjects"|bc)
se avete il lusso di utilizzare diversi gusci diversi bash, provare zsh o ksh
$ zsh -c 'echo $((4/1.3))'
3.0769230769230766
$ ksh -c 'echo $((4/1.3))'
3.07692307692307692
Non credo che bash abbia funzionalità a virgola mobile. Potete provare:
echo "$sum/$subjects" | bc -l
Bash non supporta l'aritmetica in virgola mobile. Prova invece a bc
.
totalmark=$(echo "scale=4;$sum/$subjects"|bc)
A proposito, tre risposte dicono che Bash non supporta l'aritmetica in virgola mobile. Mentre quello è vero, expr
è un programma esterno (/usr/bin/expr
per me) ed è quello, in particolare, in questo caso che non supporta i float.
La GNU 'bc' ha 'scale = 0' di default, che il Q presumibilmente non vuole. Passa le opzioni '-lq'. –
@Charles: Ecco perché ho specificato una scala di 4. Potrebbe essere qualsiasi cosa tu voglia. L'opzione '--mathlib' (' -l') fornisce un valore predefinito 'scale = 20' (almeno sul mio sistema con bc 1.06.94). L'opzione '--quiet' è comunque una buona idea. –
Mi dispiace: non avevo notato che avevi trasmesso il compito nell'input: dovevo aver sognato ad occhi aperti. 'scale = 20' è un overkill spietato, ma le informazioni desiderate sono lì, e io tendo a preferire il rumore nell'output al rumore nello script della shell. –
Non dimenticare 'perl -e' ... –
e' python -c' e 'php -r' e .... – ghostdog74
@ghostdog: Punto giusto, ma chi ha installato php sul proprio client? Beh, in effetti, vedo che è installato di default su Mac OS; Sono sicuro che Apple ha le sue ragioni ... –