Bash Skript: [[: not found Fehler

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Diablo665, 05.07.2012.

  1. #1 Diablo665, 05.07.2012
    Diablo665

    Diablo665 Grünschnabel

    Dabei seit:
    05.07.2012
    Beiträge:
    3
    Zustimmungen:
    0
    Hallo zusammen!

    Ich bin gerade an einem kleinen privaten Projekt am Werkeln, das sich um Wetterdatenmgmt dreht. Dazu verwende ich einen Wetterdatenempfänger (USB-WDE1), welcher an meinem Raspberry Pi (mit Respian) hängt und von verschiedenen Sensoren Daten bekommt. Um diese Daten langfristig zu speichern und mit diesen auch Grafiken erstellen zu können, verwende ich rrdtools, eine Round Robin Datenbank. Bis dahin läuft auch alles wunderbar ... Zum Auslesen und Speichern der Daten vom Empfänger in die .rrd Datenbank habe ich ein kleines Skipt entdeckt, welches genau diese Schritte ausführt bzw. ausführen sollte.

    Und jetzt zu meinem Problem:
    Beim Ausführen des bash Skripts bekomme ich folgende Fehlermeldung:
    Code:
    /root/scripts/weather_script_01: 8: /root/scripts/weather_script_01: [[: not found
    Der Code dazu sieht wie folgt aus:
    Code:
    #!/bin/bash
    # Receive remote weather data from USB-WDE1 and store it into database
    
    # Loop forever to read data from USB-WDE1
    socat /dev/ttyUSB0,b19200 STDOUT | \
    while read line
    do
        if [[ "${line%%;*}" == '$1' ]] ; then
            # format data
            tmp=`echo "${line#?1;1;}" | tr ';,' ':.'`
            data=`echo "N${tmp%%0}" | sed 's/::/:U:/g' | sed 's/::/:U:/g'`
            data=${data%%:}
            # update rrd
            rrdtool update /root/scripts/weather.rrd $data
        fi
    done
    Der Empfänger liefert folgende Daten:
    Code:
    $1;1;;25,8;26,0;25,9;;;;;;59;57;62;;;;;;18,6;81;0,0;32;0;0
    Jede Zeile stellt einen kompletten Datensatz dar, der aus 25 durch Semikolon getrennten Feldern besteht. Die ersten drei Felder sind unveränderlich, dann folgen die Temperaturmeßwerte (°C) von acht Sensoren und dann die Feuchtewerte dieser acht Sensoren. Danach kommen Temperatur, Luftfeuchte, Windgeschwindigkeit, Niederschlag und Regensensor eines Kombisensors. Das letzte Feld mit dem unveränderlichen Wert 0 steht für das Ende des Datensatzes.


    Ich hoffe, es kann mir jemand auf die Sprünge helfen!

    Thx,
    Manuel
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 HeadCrash, 05.07.2012
    HeadCrash

    HeadCrash Routinier

    Dabei seit:
    16.05.2009
    Beiträge:
    482
    Zustimmungen:
    1
    Ort:
    Bayern
    Moin,

    Code:
    if [[ "${line%%;*}" == '$1' ]] ; then
    
    wie kommst du da auf die zwei Klammenr, da sollte nur eine stehen.

    mfg
    HEadCrash
     
  4. #3 tgruene, 05.07.2012
    tgruene

    tgruene Routinier

    Dabei seit:
    02.02.2012
    Beiträge:
    418
    Zustimmungen:
    0
    Hallo Manuel,

    vermutlich hast Du das Skript mit 'sh /root/scripts/weather_script_01' ausgefuehrt und nicht mittels '/root/scripts/weather_script_01' oder 'bash /root/scripts/weather_script_01'
    Die doppelten eckigen Klammern sind eine Erweiterung von bash, und wenn Du /bin/sh aufrufst, ist dies, selbst wenn es ein link auf bash ist, meist eben 'sh-konform', daran aendert auch die erste Zeile '#!/bin/bash' nichts.
     
  5. #4 Diablo665, 05.07.2012
    Diablo665

    Diablo665 Grünschnabel

    Dabei seit:
    05.07.2012
    Beiträge:
    3
    Zustimmungen:
    0
    Thx für deine Antwort! In gewisser Weise hattest du recht! bei sh gibt es in der Syntax die beiden [[ nicht, unter bash anscheinend schon. hatte ich leider auch nicht gewusst!
     
  6. #5 Diablo665, 05.07.2012
    Diablo665

    Diablo665 Grünschnabel

    Dabei seit:
    05.07.2012
    Beiträge:
    3
    Zustimmungen:
    0
    Besten Dank, das wars! Wie ich oben schon geschrieben habe, waren mir die Syntaxunterschiede zwischen sh und bash nicht bewusst. Wenn ich das Script ausführbar machen würde, dann würde es wahrscheinlich auch anders funzen!

    Riesen THX und BG,
    Manuel
     
Thema:

Bash Skript: [[: not found Fehler

Die Seite wird geladen...

Bash Skript: [[: not found Fehler - Ähnliche Themen

  1. Mit bash Skript bestimmte Werte aus Tabelle lesen

    Mit bash Skript bestimmte Werte aus Tabelle lesen: Hallo! Ich beschäftige mich erst seit Kurzem mit bash und bin deshalb noch nicht so fit darin. Und nun habe ich schon ein kleines Problem und...
  2. MAKE ? JPG Dateien per Bash Skript bearbeiten

    MAKE ? JPG Dateien per Bash Skript bearbeiten: Moin Gemeinde, kann ich sicherstellen das Dateien in einem Verzeichnis trotz stündlicher Abarbeitung nur einmal bearbeitet werden. Ausnahme Neue...
  3. Debian: Bash-Skript darf nur (weiter)laufen, wenn Bildschirmschoner an

    Debian: Bash-Skript darf nur (weiter)laufen, wenn Bildschirmschoner an: Hallo zusammen, ich bräuchte mal einen Hinweis. Ziel ist es, dass das Bash-Skript nur läuft, wenn der PC gerade nicht benutzt wird. Ich dachte...
  4. Bash-Skript Text suchen und ersetzen mit unterschiedlichen Trennzeichen

    Bash-Skript Text suchen und ersetzen mit unterschiedlichen Trennzeichen: Hallo zusammen, ich habe bereits diverse Google-Suchergebnisse durchforstet, habe jedoch nirgendwo eine verwertbare Lösung für mein Anliegen...
  5. cgi bash skripting

    cgi bash skripting: Hallo! Ich habe eine Frage bezüglich CGI BASH Skripting. Folgende Aufgabe es soll durch ein einfaches HTML Formular Dinge abgefragt werde,...