[bc] Division funktioniert nicht

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hallo,
    ich möchte den 1-Wire-Temperatursensor auslesen und den Wert dividieren, um die Temperatur in °C auslesen zu können.

    Ich habe das in zwei Teilschritten durchgeführt um zu sehen, was nicht geht:

    Code
    case "$port" in
    1) TEMP=$(cat /sys/bus/w1/drivers//w1_slave_driver/10-000802b54602/w1_slave |grep t=|cut -b30-32)
    TEMPERATUR="scale=1;$TEMP/10"|bc;;
    2)...;;
    esac
    echo $TEMP
    echo $TEMPERATUR

    Bei $TEMP bekomme ich z.B. 213 (was Zehner-, Einer-und Zehntelstelle der Temperatur entspricht)
    $TEMPERATUR ist immer leer.

    Was mache ich falsch?

  • Code
    TEMPERATUR="scale=1;$TEMP/10"|bc;;

    Falsch angewendet.
    Du kannst auf die Art keine Pipe machen, du brauchst ein Befehl welcher das "ausgibt" und dessen Ausgabe kannst du dann via pipe an bc übergeben, also so:

    Code
    echo "scale=1; $TEMP / 10" | bc

    Bedeutet für deinen Fall:

    Code
    TEMPERATUR=$(echo "scale=1; $TEMP / 10" | bc)

    Oder noch besser um eine weitere Variable einzusparen:

    Code
    TEMP=$(echo "scale=1; $(cat /sys/bus/w1/drivers//w1_slave_driver/10-000802b54602/w1_slave |grep t=|cut -b30-32) / 10" | bc)

Jetzt mitmachen!

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