Diskussion:Runden und Formatieren von Zahlen in der bash

Aus BraLUG-Wiki

Wechseln zu: Navigation, Suche

Sorry, ich muss einfach ein paar Sachen loswerden:

  • wenn schon bash, dann kann man statt `expr 1 + 1` auch gleich $((1 + 1)) nehmen
  • m.M.n. sind die 2er-Einheiten zu bevorzugen (1 KiB = 1024 B statt 1 kB = 1000 B) - http://de.wikipedia.org/wiki/Speicherkapazität
  • für den relativ geringen Nutzen ist die Funktion ziemlich umständlich - mit bc geht es einfacher:
#!/bin/sh

function my_format () {
    bc << EOD
    scale = 1;
    if ( $1 > (1000*1000*1000) ) print $1 / (1024*1024*1024)," GiB" else \\
    if ( $1 > (1000*1000) ) print $1 / (1024*1024)," MiB" else \\
    if ( $1 > 1000 ) print $1 / 1024," KiB" else \\
    print $1," B"
EOD
}

Output bei deiner Eingabe:

298 B
2.9 KiB
29.1 KiB
291.0 KiB
2.8 MiB
28.4 MiB
284.1 MiB
2.7 GiB
27.7 GiB
277.5 GiB
1000 B

--MaD 14:58, 29. Mai 2006 (CEST)

'Persönliche Werkzeuge