Bash OpenSuse Raspberry

  • Hallo bin Neu auf dem Forum und könntet ihr mir bitte weiterhelfen

    Habe eine grundsätzliche Frage ist es möglich dass Skripts von Opensuse auf dem Raspberry nicht laufen?


    For Schleifen bringen Fehlermeldungen habe dies durch eine While Schleife ersetzt

    If ": Do: not found"


    und so weiter


    Was muß ich prinzipiell beachten dass es im Raspberry läuft?


    Danke im Voraus


    Idefix

  • Danke für die Antwort


    Anders formuliert ein einfaches Beispiel (das Skript läuft unter Opensuse)


    Opensuse


    Hingegen beim Raspberry


    selbe Code

    Antwort:

    Code
    Do 19.04.18 - 19:00:10  Das: ist : ein Test : 2
    Do 19.04.18 - 19:00:10  Das: ist : ein Test : 2
    x.sh: 16: x.sh: [[: not found
    ist gleich

    was ist hier falsch das selbe bei "for" Schleifen


    Habe auch noch bei verschiedenen und und oder Verknüpfungen, dort das selbe

    Code
     if [[ $y != $x ]] || [[ $a != $b ]]


    Wie kann ich das Problem lösen?


    Danke im Voraus


    Idefix

  • Auf den ersten Blick fehlt mir in Deinem Script der sogenannte Shebang in der ersten Zeile, der dem System mitteilt, unter welchem Interpreter das Script ausgeführt werden soll. Also praktisch so etwas:

    !#/bin/bash

    Bei diesem Script handelt es sich offenbar um ein bash-Script, was ich als Linux-Noob anhand der beiden Shebangs #!/bin/sh und #!/bin/bash in Deinem Script auf meinem Linux-Mint-Laptop herausgefunden habe. Linux Mint ist wie Raspbian (oder auch Ubuntu) ein Abkömmling von Debian und zumindest damit werden Scripte ohne Shebang mit der klassischen Shell /bin/sh abgearbeitet. Wie das bei Opensuse ist, weiß ich nicht:



    EDIT:

    ich merke gerade, die neue Forensoftware zeigt (zumindest auf meinem PC) den Shebang nicht an...

    In der ersten Zeile muss stehen:

    #!/bin/bash

  • Sorry Sie haben recht

    habe ich beim ausschneiden des Code vergessen aber ist enthalten im Skript enthalten



    trotzdem kommt die Fehlermeldung


    Gruß Idefix

  • oooo nein der wird einfach weggelassen, habe es gerade noch ein mal probiert und wieder das selbe, wenn ich den Beitrag bearbeite ist er wieder vollständig, reicht es wenn ich es enthalten habe oder muß ich die Datei hochladen, uum mir weiterhelfen zu können


    Gruß Idefix

  • Hallo Idefix,


    Der Shebang erscheint nur in der grafischen Darstellung durch die Forensoftware nicht. Wichtig ist, dass die erste Zeile der tatsächlichen Scriptdatei eine Shebang-Zeile ist!

    Den Fehler(?) in der Forensoftware habe ich hier gemeldet.


    schlizbäda

  • Möglicherweise verwendet Suse eine andere Shell (csh ?) mit einer anderen Syntax der for Bedingung. Die andere Shell könnte am pi aber nachinstalliert werden.


    Die vom pi verwendete bash erwartet die Testbedingung schon nach einem [

    Siehe < man [ >



    Servus !

    RTFM = Read The Factory Manual, oder so

  • Möglicherweise verwendet Suse eine andere Shell (csh ?)

    Hi,


    das kann ich mir zwar nicht vorstellen, aber auch nicht ausschließen, vielleicht schaut der TE mal einfach nach?

    echo $SHELL

    “Don’t comment bad code - rewrite it.”

  • Auch wenn im geöffneten Terminalfenster /bin/bash läuft, so ist das mitnichten innerhalb von gestarteten Scripts zwingend der Fall! Irgendwo in den Tiefen des Linux-Systems wird das exakte Verhalten in irgendwelchen *.conf-Dateien (oder so) definiert. Konkret weiß ich das leider nicht, da ich ein waschechter und bekennender Linux-Dauernoob bin.

    Auf jeden Fall muss auf dem RPi der Shebang #!/bin/bash in die erste Zeile des Scriptes eingefügt werden. Schadet selbst dann nicht, wenn man damit die Standard-Shell spezifizieren sollte.

    Wenn es dann immer noch nicht funktioniert, ist die Ursache des Problems eine ganz andere!


    schlizbäda

  • Hi,


    und du bist dir sicher, dass auf dem Raspberry auch die Bash als Standardshell verwendet wird?


    Edit: alternativ mal das Script so starten: bash <scriptname.sh>


    BTW: du möchtest den Inhalt von String x, und y vergleichen, dann würde ich grundsätzlich diese Syntax verwenden:


    “Don’t comment bad code - rewrite it.”

  • Supper SLS


    Eine Klammer und "" haben geholfen das kann man ändern das ist nicht die Welt und läuft


    allen andern noch ein Danke schön schönes WE


    gruß Idefix

  • Hallo Idefix,

    kannst Du bitte das Thema korrigieren? Da fehlt ein s in Raspberry. Und ein paar Großbuchstaben fördern die Lesbarkeit.

    "bash opensuse rapberry" z.B. in "Bash OpenSuse Raspberry"

    Schönen Gruß, kle

  • echo $SHELL


    Antwort=


    /bin/bash

    Ja, das ist die Standard Shell des angemeldeten ISuse) Users.


    Das Problem ist, dass wir die erst Zeile Deines Scipts von Beitrag #3 nicht sehen (Forensoftware Feature/Fehler) und genau dort steht nach #! die vom Scipt verlangte Shell drinnen.


    Mit einfachen eckigen Klammern sollte die Testbedingung auswertbar sein.

    Ein Testprogramm mit doppelten Klammern gibt es bei der Linux-Pi (Debian) Standardinstallation nicht.

    Da gibt :~$ whereis [

    [: /usr/bin/[ /usr/share/man/man1/[.1.gz aus, und :~$ whereis [[ nichts


    Am Suse Linux wird ein erweitertes Testprogramm [[ installiert sein, zusammen mit anderen Shells.



    Servus !

    RTFM = Read The Factory Manual, oder so

  • Linux - Idefix

    Changed the title of the thread from “bash opensuse rapberry” to “Bash OpenSuse Raspberry”.