Anzeige:
Ergebnis 1 bis 11 von 11

Thema: "function" will nicht

  1. #1
    Registrierter Benutzer Avatar von gumork.gmork
    Registriert seit
    18.12.2004
    Beiträge
    15

    "function" will nicht

    Hallo Forenmitglieder,

    ich wende mich in meiner Verzweiflung nun an Euch in der wagen Hoffnung, daß mir jemand die Augen öffnen kann.
    Bin absoluter Linux- und Programmier- Newbie, versuche mich aber seit drei Tagen im Shellscript schreiben (bash). Leider bekomme ich es nicht hin, zu Beginn des Scripts Funktionen zu deklarieren. Wenn ich folgendes schreibe (ganz vereinfacht):

    #!/bin/sh
    function abc () { echo "Hello World" ;}
    echo "Press Enter"
    read
    abc

    bekomme ich bei Aufruf des Scripts die Meldung:
    ': line 2: syntax error near unexpected token `{
    ': line 2: `function abc () {

    Habe jetzt drei Tage das Netz durchsucht, aber keine Hilfe gefunden! Bin ich zu blöd? Was mach ich falsch?
    ----------------------------------------------------------
    gumork.gmork ist kein Synonym, ist mein Spitzname
    :cool:

    System: Kernel 2.6, Suse 9.1, KDE3.3,

  2. #2
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Bei mir geht das

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  3. #3
    Registrierter Benutzer Avatar von gumork.gmork
    Registriert seit
    18.12.2004
    Beiträge
    15
    Tja, das hilft mir ja nun auch nicht weiter. Werde ich halt alles ohne Funktion schreiben müssen

    Das Leben geht weiter...
    ----------------------------------------------------------
    gumork.gmork ist kein Synonym, ist mein Spitzname
    :cool:

    System: Kernel 2.6, Suse 9.1, KDE3.3,

  4. #4
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    Ersetze mal
    Code:
    #!/bin/sh
    durch
    Code:
    #!/bin/bash
    , wahrscheinlich nutzt du bash-Syntax

  5. #5
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    05.03.2000
    Ort
    Uetersen
    Beiträge
    571
    Also bei mir geht der Code auch. Was hast du denn für eine Distri?
    Code:
    #!/bin/sh
    function abc () {
      echo "Hello World"
    }
    
    
    echo "Press Enter"
    read
    
    abc
    read
    Hans
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

  6. #6
    Registrierter Benutzer Avatar von gumork.gmork
    Registriert seit
    18.12.2004
    Beiträge
    15
    @Joghurt: das mit der bash habe ich auch schon versucht. ist auch eigentlich egal, weil /bin/sh nur ein link auf /bin/bash ist. Auch der direkte Aufruf mittels sh script oder bash script oder ähnliches hat keinerlei Erfolg. Ansonsten klappt das meiste, was ich in dem script schreibe.
    @Hans-Georg: Ich benutze Suse 9.1, Kernel 2.6.5, bash 2.05b
    ----------------------------------------------------------
    gumork.gmork ist kein Synonym, ist mein Spitzname
    :cool:

    System: Kernel 2.6, Suse 9.1, KDE3.3,

  7. #7
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    Zitat Zitat von gumork.gmork
    @Joghurt: das mit der bash habe ich auch schon versucht. ist auch eigentlich egal, weil /bin/sh nur ein link auf /bin/bash ist.
    Aber das muss ja nicht immer der Fall sein...
    Mich wundert das Leerzeichen bei der Fehlermeldung
    ': line 2: syntax error near unexpected token `{
    (Vor der {)
    Auch das der Name der Shell oder des Skriptes mit ' angegeben wird, ist doch sehr seltsam.
    Lösche einfach mal Zeile 2 komplett und gebe sie neu ein. Vielleicht hat dein Editor das ASCII-Zeichen 255 anstatt des Leerzeichens eingefügt oder so einen Käse...
    Was passiert denn, wenn du das Skript direkt in der Shell eingibst?

  8. #8
    Registrierter Benutzer Avatar von gumork.gmork
    Registriert seit
    18.12.2004
    Beiträge
    15
    Vielen Dank, Joghhurt.
    Ich weiß zwar immer noch nicht ganz genau, woran es liegt, aber mein Mini -Testscript funktioniert, wenn ich es mit nem Konsoleneditor (vi) schreibe. Mein Problemscript war mit Kdevelop geschrieben. Bin eigentlich davon ausgegangen, daß das Programm den Code mit dem richten Zeichensatz speichert. Aber vermutlich lag darin irgendwo der Fehler. Wenn ich noch mehr rausfinde, poste ich das hier - für den Fall das mal jemand anders ein ähnliches Problem haben sollte


    Gumork
    ----------------------------------------------------------
    gumork.gmork ist kein Synonym, ist mein Spitzname
    :cool:

    System: Kernel 2.6, Suse 9.1, KDE3.3,

  9. #9
    Registrierter Benutzer
    Registriert seit
    17.07.2003
    Beiträge
    87
    Kann es sein, dass du das Script unter Windows geschrieben hast und dann per FTP oder copy´n paste übertragen hast?

    Generell ist bei zickigen Scripts unbekannter Herkunft ein 'dos2unix scriptname' angebracht.

  10. #10
    Registrierter Benutzer
    Registriert seit
    24.12.2001
    Ort
    anywhere before EOF
    Beiträge
    236
    Zitat Zitat von gumork.gmork
    ist auch eigentlich egal, weil /bin/sh nur ein link auf /bin/bash ist.
    So egal auch wieder nicht, weil sich die BASh ARAIR als `sh` aufgerufen z. T. anders verhält, auch wenn das nicht die Ursache des Problems sein mag, aber generell gilt es auf jeden Fall nicht.
    chmod -R +t /*

  11. #11
    Registrierter Benutzer Avatar von gumork.gmork
    Registriert seit
    18.12.2004
    Beiträge
    15
    Danke für die Tips. Die Sache läuft jetzt auch bei mir. Und wenn Ihr mich nicht weiterverratet, die Sache mit dos2unix hätte mir früher klar sein sollen. Bin halt a Neiling und muß mich erst einarbeiten. Aller Anfang ist schwer
    ----------------------------------------------------------
    gumork.gmork ist kein Synonym, ist mein Spitzname
    :cool:

    System: Kernel 2.6, Suse 9.1, KDE3.3,

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •