Seite 1 von 1

[gelöst] End of file für bash

Verfasst: 17.02.2009 21:39
von Elektrolurch
Hallo All

Ich habe mal eine Frage die eigentlich nur am Rande mit PB zu tun hat.
Ich generiere mit OpenFile übers Netzwerk eine Linux Bash.
Dann starte ich über meinen gebastelten Telnet-Client die Bash.
Leider erhalte ich die Fehlermeldung:

Code: Alles auswählen

IRadio.sh: line 18: syntax error: unexpected end of file.
Meine Recherche ergab, dass es wohl daran liegt, dass die Datei mit einem Windowssystem erstellt wird.
Gibt es dazu eine Lösung.
Ein richtiges EndOfFile würde schon genügen.

Danke schon Mal

Bye Andre

Verfasst: 18.02.2009 10:17
von Elektrolurch
Hi All

Hat keiner, nicht die kleinste Idee? :o

Wäre mit jedem Krümelchen glücklich.

Bye Andre

Re: End of file für bash

Verfasst: 18.02.2009 11:42
von Kiffi
Elektrolurch hat geschrieben:Ein richtiges EndOfFile würde schon genügen.
EOF wir meines (Halb-)Wissens durch Hex 1A gekennzeichnet.

Grüße ... Kiffi

Verfasst: 18.02.2009 20:10
von Elektrolurch
Hi

Das ganze liegt wohl nicht ganz so einfach.

Als Beispiel generierte ich folgende Bash

Code: Alles auswählen

#!/bin/sh 
FILE=/opt/Fidelio/bin/pizarro 

if [ -r ${FILE}.orig ]; 
then 
  echo "${FILE}.orig already exists: exiting" 
  exit 
fi 

echo "Done"
Wenn ich die If-Schleife auskomentiere läuft die Bash.
Mit kommt wieder der Fehler

Code: Alles auswählen

 syntax error: unexpected end of file.
Schreibe ich die Bash mit dem Editor Joe läuft auch die IF-Schleife.

Irgendwie stehe ich da auf dem Schlauch.
Hat noch jemand eine Idee?

Bye Andre

Re: End of file für bash

Verfasst: 18.02.2009 20:29
von Little John
Elektrolurch hat geschrieben:Meine Recherche ergab, dass es wohl daran liegt, dass die Datei mit einem Windowssystem erstellt wird.
Ich nehme an, das Windowssystem schreibt als Zeilenumbrüche CRLF in die Datei. Der Editor Joe wird stattdessen sicherlich -- wenn es ein Linux-Editor ist -- LF benutzen.
Leider kenne ich mich mit Bash files nicht aus, aber kann es sein dass Linux es nicht verträgt, wenn dort CRLF für Zeilenumbrüche verwendet wird?

Gruß, Little John

Verfasst: 18.02.2009 20:44
von Elektrolurch
Hi Little John

Ich habe mal das

Code: Alles auswählen

WriteStringN(0," #!/bin/sh")
in

Code: Alles auswählen

WriteString(0," #!/bin/sh"+Chr(10))
geändert. Somit abe ich das CRLF entfernt und ein manuelles LF eingefügt.

aber leider wieder Pech

Code: Alles auswählen

line 8: syntax error: unexpected end of file 
trotzdem Danke

Bye Andre

Verfasst: 19.02.2009 18:08
von Elektrolurch
Hi all

Little John war schon auf dem richigen Weg
LF alleine hat nicht gereicht.

Code: Alles auswählen

WriteString(0," #!/bin/sh"+Chr(10),#PB_Ascii) 
Mit der Erweiterung LF = CHR(10) + #PB_Ascii läuft es.

Danke an all die sich den Kopf zerbrochen haben.

Bye Andre

Verfasst: 20.02.2009 00:34
von Little John
Das ist interessant. Danke fürs posten der "Auflösung".

Gruß, Little John

Verfasst: 20.02.2009 00:43
von Kaeru Gaman
Elektrolurch hat geschrieben:LF alleine hat nicht gereicht.

Code: Alles auswählen

WriteString(0," #!/bin/sh"+Chr(10),#PB_Ascii) 
Mit der Erweiterung LF = CHR(10) + #PB_Ascii läuft es.
.... also ist dein Erzeuger eine Unicode-Exe...
wenn du ne ANSI-Exe nimmst, müßte es auch ohne das Flag funktionieren...

Verfasst: 20.02.2009 22:22
von Thalius
bash scripte brauchen am ende ein returnzeichen. ( wird als end of file interpretiert ).