PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : "function" will nicht



gumork.gmork
18-12-2004, 09:05
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?

peschmae
18-12-2004, 09:58
Bei mir geht das :confused:

MfG Peschmä

gumork.gmork
18-12-2004, 18:57
Tja, das hilft mir ja nun auch nicht weiter. Werde ich halt alles ohne Funktion schreiben müssen
:mad:
Das Leben geht weiter...

Joghurt
19-12-2004, 16:43
Ersetze mal
#!/bin/sh durch
#!/bin/bash, wahrscheinlich nutzt du bash-Syntax

Hans-Georg Normann
19-12-2004, 21:56
Also bei mir geht der Code auch. Was hast du denn für eine Distri?
#!/bin/sh
function abc () {
echo "Hello World"
}


echo "Press Enter"
read

abc
read Hans

gumork.gmork
20-12-2004, 15:55
@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

Joghurt
20-12-2004, 16:09
@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?

gumork.gmork
20-12-2004, 18:55
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

:D
Gumork

ThorstenS
22-12-2004, 08:40
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.

sticky bit
27-12-2004, 14:14
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.

gumork.gmork
31-12-2004, 09:27
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
:)