Shell-Script funktioniert nicht als Script

Mindwinder

Mitglied
Moin Moin,
ich habe mit dem folgendem Script ein Problem:
Code:
#!/bin/bash
OUTDIR=/xxx/out/stats/
LOGDIR=/xxx/logs/
for j in [0-z]; do                                 #schleife bearbeitet vrz 0-z
   for i in $LOGDIR$j/*-access_log; do    #schleife über logfiles
      if [ -f $i ]; then                                   #wenn Datei
         vrz="${i//-access_log/}"                     #entferne -access_log v Str
         vrz="${vrz//${LOGDIR}/${OUTDIR}}"    #tausche log dir mit outdir
         dname="${vrz//${OUTDIR}${j}\//}"       #entferne outdir für domnamen
         echo $vrz                                         #überflüssige ausgabe:)
         if [ ! -d $vrz ]; then                             #wenn verz noch nicht vorhanden
            mkdir $vrz; fi                                  # dann erstellen
         webalizer -n $dname -o $vrz $i;          #webalizer nen par ml ausführen
         echo $dname; fi;                               # noch ne überflüssige ausg
   done;
done
es klappt alles prima solange ich das Script direkt in die Shell hacke, nur sobald ich es als Script versuche laufen zu lassen, bekome ich stehts eine Fehlermeldung n der Richtung unregognized Token near do. Es verhält sich gradezu so als kenne der keine For Schleife im Script :). Hab mir gestern bereits bei der Konkurenz und Google die Finger wundgesucht, jedoch nix gefunden. Aufrufen tue ich das script dann übrigens mit sh ./scriptname.sh oder . ./scriptname.sh oder einfach ./scriptname - klappt alles nicht :).
Zum besseren Verständnis: das Script liegt im Verzeichnis logs welches Unterverzeichnisse von 0-z enthält in welchen wiederum meine Logfiles liegen.

Hoffe mir kann jemand helfen.

PS: Hatte irgedwie keinen Vorstellungsthread gefunden daher kurz zu meiner Person...
wohnhaft in Hamburg, studiere im 3 Sem Informatik, versuche einen Linux Server zu administrieren und werde sicherlich noch mit zahlreichen Fragen kommen. z.B.: Wieso klappt das Ausrücken der Kommentare nicht? - Aha
 
Zuletzt bearbeitet:
Willkommen im Forum.

Im normalen Text werden solche Aktionen wie mehrfache Spaces oder Tabs durch einfach Spaces ersetzt.
Wenn Du mit den Code-Tags [ code ] [ /code ] (natuerlich ohne die Leerzeichen) arbeitest werden auch solche "Formatierungen" beibehalten.
 
Lost in Transmission :) - danke war leider nur hier ein Tippfehler. Im richtigen Script stehts korrekt, mein Problem besteht also weiterhin :(.

Nette Grüße,

Mindwinder
 
Mach mal ein chmod 755 für dein Script. Das wars bei mir warum ich das nicht ohne sh ./script ausführen konnte
 
Hi.
Mindwinder hat gesagt.:
Lost in Transmission :) - danke war leider nur hier ein Tippfehler. Im richtigen Script stehts korrekt
Warum hast du denn dann nicht das richtige Skript gepostet? :confused:

Starte das Skript doch bitte mal folgendermaßen und poste das Resultat:
Bash:
bash -xv scriptname.sh

Gruß
 
Also "unrecognized token near do" impliziert ja einen Fehler in deinen regulären Ausdrücken oder nicht? Hast du die mal überprüft?
 
Also da das script via Copy & Paste in die Shell funktioniert, gehe ich mal davon aus die die Ausdrücke richtig sind. Geht so ein Shell Script Pfad technisch vielleicht von ./bin/bash oder so aus und nicht vom Ausführungsort? Dann würde der Ausdruck natürlich keinen Sinn machen, dürfte aber meineserachtens dennoch keinen Fehler produzieren.

Gruß Mindwinder
 
Mindwinder hat gesagt.:
Also da das script via Copy & Paste in die Shell funktioniert, gehe ich mal davon aus die die Ausdrücke richtig sind. Geht so ein Shell Script Pfad technisch vielleicht von ./bin/bash oder so aus und nicht vom Ausführungsort?
Relative Pfadangaben werden natürlich immer vom Ausführungsort aus aufgelöst (nicht vom Pfad der Shell aus und auch nicht vom Pfad des Skripts aus).

Was passiert nun wenn du das Skript mit den Optionen -xv ausführst?

Gruß
 
+ $'\r'
: command not found:
OUTDIR=/xxx/out/stats/
+ OUTDIR=/xxx/logs/stats/
LOGDIR=/xxx/logs/
+ LOGDIR=/xxx/logs/
for j in [0-z]; do
'ebalize.sh: line 5: syntax error near unexpected token `do
'ebalize.sh: line 5: `for j in [0-z]; do
 

Neue Beiträge

Zurück