Rechnen im Shell Skript

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Moin ihr lieben ich habe auf http://fenderdev.com/blog ein Temperaturskript gefunden und gaaanz leicht umgebastelt jedoch bekomme ich es nicht hin das ich mir nachkomma stellen
    ausrechnen lassen kann...

    könnt ihr mir helfen?

    ich würde mir zb gerne 22,475 °C anzeigen lassen...

    liebe grüße

  • Das Script ist unvollständig. Anscheint aus nano raus kopiert? Die jeweilige Zeile von ./notify.sh ist zu lang und abgeschnitten..

    Um Nachkomma Stellen zu rechnen kann man bc benutzen:

    Code
    apt-get install bc

    Und dann muss man (wie du das auch schon in deiner temp= Zeile gemacht hast) über | pipen und an bc übergeben

    Für dein Fall zum Beispiel so:

    Code
    temp=`echo "scale=1; `cat /sys/bus/w1/devices/$sensor/w1_slave | tail -n 1 | awk -F '=' '{print $2}'`" | bc -l`

    Wobei ich anstatt ` ` lieber $( ) nutze um Rückgabewerte von Befehlen zu verwenden:

    Code
    temp=$(echo "scale=1; $(cat /sys/bus/w1/devices/$sensor/w1_slave | tail -n 1 | awk -F '=' '{print $2}')" | bc -l)

    Jedenfalls sorgt scale=1 dafür das eine Stelle nach dem Komma ausgegeben wird

    Es kann auch sein das du den Wert noch durch 1000 teilen musst, dann würde die Zeile so aussehen:

    Code
    temp=$(echo "scale=1; $(cat /sys/bus/w1/devices/$sensor/w1_slave | tail -n 1 | awk -F '=' '{print $2}') / 1000" | bc -l)

    Achte auch darauf dass beim awk Befehl anstatt " -> ' genutzt werden, da nach dem echo Befehl bereits ein " ist und es ansonsten zu einem Konflikt kommt

    Vereinfacht dargestellt, und auch zum einfacheren Verständnis:

    Code
    echo "scale=1; 123456789 / 1000" | bc -l

    Wenn du mehr Stellen nach dem Komma haben möchtest erhöhst du eben scale, zum Beispiel:

    Code
    echo "scale=3; 123456789 / 1000" | bc -l

    Ausgabe wäre dann:

    Code
    123456.789

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!