Diskussion:Runden und Formatieren von Zahlen in der bash

Aus BraLUG-Wiki

(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(so wuerde ich das machen...)
Zeile 1: Zeile 1:
 
Sorry, ich muss einfach ein paar Sachen loswerden:
 
Sorry, ich muss einfach ein paar Sachen loswerden:
 
* wenn schon <code>bash</code>, dann kann man statt <code>`expr 1 + 1`</code> auch gleich <code>$((1 + 1))</code> nehmen
 
* wenn schon <code>bash</code>, dann kann man statt <code>`expr 1 + 1`</code> auch gleich <code>$((1 + 1))</code> nehmen
 +
** gut, wußte ich nicht...--[[Benutzer:Bergeruw|Bergeruw]] 20:25, 29. Mai 2006 (CEST)
 
* 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
 
* 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
 +
** nun ja, kann man sehen wie man möchte denke ich...--[[Benutzer:Bergeruw|Bergeruw]] 20:25, 29. Mai 2006 (CEST)
 
* für den relativ geringen Nutzen ist die Funktion ziemlich umständlich - mit <code>bc</code> geht es einfacher:
 
* für den relativ geringen Nutzen ist die Funktion ziemlich umständlich - mit <code>bc</code> geht es einfacher:
  
Zeile 34: Zeile 36:
  
 
--[[Benutzer:MaD|MaD]] 14:58, 29. Mai 2006 (CEST)
 
--[[Benutzer:MaD|MaD]] 14:58, 29. Mai 2006 (CEST)
 +
 +
Ziel war es ohne externe Programme wie z.B. <code>bc</code> auszukommen -> die Lösung hatte ich vorher auch schon ;-) --[[Benutzer:Bergeruw|Bergeruw]] 20:25, 29. Mai 2006 (CEST)

Version vom 29. Mai 2006, 20:25 Uhr

Sorry, ich muss einfach ein paar Sachen loswerden:

  • wenn schon bash, dann kann man statt `expr 1 + 1` auch gleich $((1 + 1)) nehmen
    • gut, wußte ich nicht...--Bergeruw 20:25, 29. Mai 2006 (CEST)
  • 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
    • nun ja, kann man sehen wie man möchte denke ich...--Bergeruw 20:25, 29. Mai 2006 (CEST)
  • 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)

Ziel war es ohne externe Programme wie z.B. bc auszukommen -> die Lösung hatte ich vorher auch schon ;-) --Bergeruw 20:25, 29. Mai 2006 (CEST)

'Persönliche Werkzeuge