
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 seltsamerweisebc
wird 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