Script läuft nicht so wie ich will

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Moin, ich habe mühsam ein Script geschrieben, aber es will nicht so wie ich will.
    Meiner Meinung nach habe ich viele Fehler gemacht, komme aber nicht ganz dahinter.
    Der Thread ist die Fortführung dieses Threads hier
    Meine Kenntnisse sind auch sehr begrenzt, für die paar Zeilen habe ich schon Tage gebraucht. :blush:
    Da fehlt z.B. eine vernünftige Schleife und bestimmt ein while...
    Die Voltzahl wird mir noch ausgegeben, dann nichts mehr. :s
    :helpnew:
    Hier mal das Script:


    Kann mir jemand auf die Sprünge helfen ?
    Thx und MfG

    P.S. Andreas, dein Briefkasten quillt über, kann dir keine PN schicken. :wallbash:

  • Moin,


    ... Meine Kenntnisse sind auch sehr begrenzt, ...

    hm ... was hälst Du davon, daran was zu ändern? Z.B. indem Du Dir mal -> die Kontrollstrukturen <- der bash verinnerlichst und und nebenbei schon mal die Syntax-Fehler eliminieren würdest?
    Sonst lernst Du das ja nie ... und gerade bash wirst Du vermutlich öfter mal brauchen.

    cu,
    -ds-

  • "[" ist ein (Test-)Kommando, deswegen muss ein whitespace folgen

    Code
    if [ teststatement ]

    Wenn du nichts zu sagen hast, sag einfach nichts.

    Einmal editiert, zuletzt von llutz (3. Oktober 2016 um 10:49)

  • Hallo Fred,

    was ist denn mit dem Icon-Programm, das ichj Dir geschickt habe. Da sind alle Pipes und Berechnungen Deines BASH-Skriptes enthalten. Mir ist nach wie vor icht klar, warum dort immer die gleiche Spannung ausgegeben wird.

    Hier kommt man erst dann weiter, wenn man alle Eingaben des Programms kennt und die Ausgaben des Programms aufgrund der BErechnungsformeln nachvollziehen kann.

    Hier noch mal das Icon-Programm der gestrigen Version (bzw. von heute Nacht):

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Einmal editiert, zuletzt von Andreas (3. Oktober 2016 um 10:55)

  • Ein Problem gelöst, nächstes taucht auf:
    Er erwartet einen ganzzahligen Ausdruck, wieso kann ich keine Zahlen mit Komma vergleichen ?
    Bzw. wie kürze ich dann die Kommastelle weg, was mir eigentlich nicht so lieb wäre ?
    MfG

    Andreas, ich wollte dir 'ne PN schicken, ging aber nicht, weil dein Postfach überquillt.
    In deiner Log steht
    08:19:15 0x8d 128 11.68
    Sollte aber
    08:19:15 0x8d 142 12.8
    sein.
    Also irgendwas rechnet das Programm wohl falsch. :s

  • Wie baue ich das denn in die if-Abfrage mit ein ? :s
    Bzw. wie kann ich mit awk die Stellen kürzen damit es mit einfliesst ?

    Code
    Volt=$(awk "BEGIN {print ($Dezwert - $BekannterWert) * $Verhaeltnis + $ZahlzuBekanntemWert; }")
    printf "%.2f\n",
  • Code
    printf "%.2f\n",
    Volt=$(awk "BEGIN {print ($Dezwert - $BekannterWert) * $Verhaeltnis + $ZahlzuBekanntemWert; }")


    Wie bastel ich das zusammen ? :denker:

    EDIT: Habs so hinbekommen:

    Code
    VoltmitKomma=$(awk "BEGIN {print ($Dezwert - $BekannterWert) * $Verhaeltnis + $ZahlzuBekanntemWert; }")
    echo $VoltmitKomma
    Volt=$(echo $VoltmitKomma | sed -e 's/\..*$//')
    echo $Volt

    Jetzt muss ich mich noch mit den Schleifen beschäftigen. :bravo2:
    Danke an alle Helfer ! :danke_ATDE:

  • Hallo Fred,

    Andreas, ich wollte dir 'ne PN schicken, ging aber nicht, weil dein Postfach überquillt.

    Das liegt daran, dass auch viele andere als in laufenden Projekten die PN nutzen - worauf ich allerdings nur in seltenen Fällen reagiere.

    Dann liegt das an der Umwandlung HEX nach DEZ. Ich ging davon aus, dass echte Hexadezimalwerte (also 8d statt 0x8d) überliefert wird.

    Dann sieht die Lösung so aus:


    Füge die Zeile mit if find... ein... Dann wird's was werden.

    Allerdings ergibt die Konvertierung von HEX 8d 141 und nicht 142... ;)

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • => rechnen mit variablen

    Du nutzt zwar an einigen Stellen bereits Einrückungen aber bei der if Abfrage zum Beispiel nicht. Einrückungen sind für bash zwar nicht lebenswichtig, helfen aber das Script zu lesen und zu verstehen ;) Generell ist es gut sich anzugewöhnen Einrückungen zu nutzen, egal in welcher Sprache man programmiert.

    Bei deinen if Abfragen fehlt auch noch ein "fi" um diese zu schließen.

    Für die echo Zeilen nach /sys/class/gpio/ bedarf es keiner "

    Führst du das Script mit sudo aus bedarf es im Script selbst keinerlei sudo mehr, da dann alle im Script befindlichen Befehle ebenfalls als root ausgeführt werden.

    Für was soll das dienen:

    Code
    Dezwert=$(printf $(($Hexwert)))
    echo $Dezwert

    sowas machst du öfters, aber wozu? :s

  • Code
    Volt=$(echo $VoltmitKomma | sed -e 's/\..*$//')


    Wenn Du jetzt doch die Nachkommastellen abschneiden willst geht das auch ohne sed:

    Code
    Volt=${VoltmitKomma%.*}


    Automatisch zusammengefügt:

    ...Das liegt daran, dass auch viele andere als in laufenden Projekten die PN nutzen - worauf ich allerdings nur in seltenen Fällen reagiere...


    Dann würde ich PNs generell verbieten. Ansonsten den 'Spam' löschen, denn sonst kann Dich ja keiner per PN anschreiben von dem Du vielleicht doch die PN erhalten und lesen moechtest :shy:

  • Möchtest du dein Anliegen jetzt nicht mehr in bash weiterführen, dann tätige bitte eine entsprechende Äußerung und markiere diesen als 'Erledigt'.

    ...Ansonsten bitte nicht zwischen mehreren Threads hin und her hüpfen....

    In dem anderen Thread hast du Andreas gebeten etwas für Dich in Icon zu programmieren - darauf konntest du nicht warten und hast dann ein bash Script selber angefangen - das läuft nun nicht so wie erhofft und nun gibst du bereits innerhalb eines Tages auf?


    PS: Ich finde es komisch wieso eine Klärung über PN son Unterschied zu ner Klärung in einem Thread sein soll... Außer das der Rest der Welt davon nichts mit kriegt und somit mögliche andere Meinung ausgeschlossen werden... Das ist irgendwie so als würden wir hier nur Threads mit Fragen haben aber Anworten kommen nur via PN....

    //EDIT: Andreas: Ich sagte nicht das es _nicht_ legitim sei mehrere Ansätze zu suchen - bitte verdreh nicht meine Worte.

  • Hallo Fred0815,


    Sollen wir den Thread weiterführen ?

    EDIT 16-OKT-2017: Link im Zitat von fred0815 auf neues Forum angepasst


    Können wir machen - läuft das Icon-Programm denn jetzt erwartungsgemäß?

    Beste Grüße

    Andreas
    Automatisch zusammengefügt:
    Hallo Meigrafd,


    Möchtest du dein Anliegen jetzt nicht mehr in bash weiterführen, dann tätige bitte eine entsprechende Äußerung und markiere diesen als 'Erledigt'.

    Ich denke, es ist durchaus legitim, eine Lösung in zwei unterschiedlichen Ansätzen (BASH-Skript, Lösung in einer Programmiersprache) auf vergleichender Basis zu nutzen.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    2 Mal editiert, zuletzt von Andreas (16. Oktober 2017 um 18:53)

  • Hallo Meigrafd,


    PS: Ich finde es komisch wieso eine Klärung über PN son Unterschied zu ner Klärung in einem Thread sein soll... Außer das der Rest der Welt davon nichts mit kriegt und somit mögliche andere Meinung ausgeschlossen werden... Das ist irgendwie so als würden wir hier nur Threads mit Fragen haben aber Anworten kommen nur via PN....

    Ich finde das nicht komisch - auch nicht lustig.

    Fred0815 und ich saßen beim Grillen und das Gespräch kam auch auf diese Thematik. Da sich in dem anderen Thread keine Lösung auftat, habe ich angeboten, eine Lösung in der Programmiersprache Icon zu programmieren. Und als ich dann eines abends vor dem Rechner saß, taten sich etliche ungeklärte Fragen auf . Da wir damit nicht das Forum zukippen wollten, haben wir diese Fragen per PN geklärt. Und es war von Anfang an abgesprochen, dass erst die Version im Thread veröffentlicht wird, die voll funktionsfähig ist. Dies ist bislang offensichtlich noch nicht der Fall, da erst heute eine bislang nicht bekannt gemachte Information über das Format der Rückgabe des i2cget-Kommandos erfolgte.


    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.


  • Für was soll das dienen:

    Code
    Dezwert=$(printf $(($Hexwert)))
    echo $Dezwert

    sowas machst du öfters, aber wozu? :s


    Weil ich Schritt für Schritt vorgehe und so die einzelnen Rechenschritte auch sehe, falls was schiefgeht.
    Das passt schon, dass mehrere Varianten des Programms in verschiedenen Sprachen gibt.
    Bash werde ich noch öfter brauchen, wie Dreamshader schon treffend festgestellt hat und als Basis für andere Programmiersprachen bestimmt gut geeignet.

    Zitat


    Bei deinen if Abfragen fehlt auch noch ein "fi" um diese zu schließen.


    Habs noch eingefügt.
    Jetzt erst mal sehen ob ich eine Schleife hinbekomme.
    MfG
    :danke_ATDE:

Jetzt mitmachen!

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