Ist es möglich, durch eine Division in Bash eine Dezimalausgabe zu erhalten?

Ist es möglich, durch eine Division in Bash eine Dezimalausgabe zu erhalten?

In Bash versuche ich grundsätzlich, die Sekundeneingabe eines Benutzers zu akzeptieren und daraus die Stunden zu ermitteln. Wenn der Benutzer also 35 eingibt, sollte die Ausgabe 0,00972222 sein.

Aber Bash gibt mir eine Null.

hier ist der Befehl, den ich habe:

echo "Enter the seconds you wish to convert to hours: " && read sec && echo " $((sec/3600)) is the amount of hours "

Gibt es eine Möglichkeit, es so einzurichten, dass 0,00972222 ausgedruckt wird, wenn ich 35 eingebe?

Danke!

Antwort1

Versuchen Sie dies hier

echo $(echo "35/3600" | bc -l )

Ihr Befehl würde also so aussehen

echo "Enter the seconds you wish to convert to hours: " && read sec && echo " $(echo "$sec/3600" | bc -l ) is the amount of hours "

Um die Anzahl der ausgegebenen signifikanten Ziffern zu steuern, verwenden Sie scale=N. Beispiel:

$ echo "scale=3; 35/3600" | bc -l 
.009

Wenn Sie auch den führenden Teil gedruckt haben möchten 0(was seltsamerweisebcwird nicht leicht gehen), können Sie die Zahl an folgende Adresse weiterleiten printf(die sie auch für Sie auf-/abrunden kann):

$ printf '%.3f\n' $(echo "35/3600" | bc -l)
0.010
$ printf '%.4f\n' $(echo "35/3600" | bc -l)
0.0097

verwandte Informationen