Bash-Script läuft unter SuSE 7.0 aber nicht unter 8.0

M-Grulich

M-Grulich

Jungspund
Bash-Script läuft unter SuSE 7.0 aber nicht unter 8.1

Hi Leute,

ich habe ein recht unfangreiches Bash-Script geschrieben.
Dieses läuft auf der SuSE 7.0 einwandfrei, doch auf der 8.1 gibt es Probleme.
Ist da was näheres bekannt, das das da Probleme gibt, wenn ja waoran liegt das und wie kann ich das umgehen/beheben ?

danke schonmal.
 
Zuletzt bearbeitet:
Hallo

Ich kenne dein Skript nicht und hatte/habe keine suse, deshalb kann ich nur spekulieren.

Welche Fehlerausgabe bekommst du denn?
Es gibt verschiedene Gründe, die zu Fehlern führen können.
Da kommen sowohl Pfade, als auch Versionen der verwendeten Utilitys in Frage.
Mit diesen fehlenden Informationen über Fehelerausgaben und Fehlerart kann man dazu leider nichts hilfreiches sagen.

Gruß Wolfgang
 
Fehlermeldungen?
Was für Befehle melden denn einen Fehler?

Bitte mehr Infos wenn du wirklich Hilfe suchst!
 
Setze doch mal vor deine Problemstelle
set -xv

das liefert dir etwas mehr Informationen zum Debuggen.

Gruß, Jobi
 
Erstmal danke für die schnellen antworten, ... nur das Problem ist folgendes:

http://www.unixboard.de/vb3/images/buttons/report.gifEs gibt keine Fehlermeldungen !http://www.unixboard.de/vb3/images/buttons/report.gif

Das ist ein Script was ein paar sachen aus einer Datei ausliest und ein paar sachen ummodelt und dann wieder ausgibt, mit der SuSE 7.0 geht das auch noch . nur mit den selben datei vom selben ort aus geht es mit der 8.1 nicht, es kommen ganz einfach keine Ausgaben.

Auf der SuSE 7.0 kommen die erwarteten Ausgaben noch nur bei der 8.1 kommen halt einfach keine.

Gibts noch mehr Ideen ?
 
Zuletzt bearbeitet:
M-Grulich schrieb:
Erstmal danke für die schnellen antworten, ... nur das Problem ist folgendes:

Es gibt keine Fehlermeldungen !

Das ist ein Script was ein paar sachen aus einer Datei ausliest und ein paar sachen ummodelt und dann wieder ausgibt, mit der SuSE 7.0 geht das auch noch . nur mit den selben datei vom selben ort aus geht es mit der 8.1 nicht, es kommen ganz einfach keine Ausgaben.

Gibts noch mehr Ideen ?
Wenn es ohne Fehlerausgabe zu keinem Ergebnis kommt, dann ist der Code ohnehin nicht gerade optimal.
Lösung: Bau an den fehlerträchtigen Stellen Fehlerausgaben ein.
Das sind z.B. test auf Existens von Dateien/Daten , Fallunterscheidungen usw.

Gruß Wolfgang
 
Wolfgang schrieb:
Wenn es ohne Fehlerausgabe zu keinem Ergebnis kommt, dann ist der Code ohnehin nicht gerade optimal.
Lösung: Bau an den fehlerträchtigen Stellen Fehlerausgaben ein.
Das sind z.B. test auf Existens von Dateien/Daten , Fallunterscheidungen usw.

Gruß Wolfgang

Da ich nur eine Datei ausser dem Script benutze und das nur ganz simple an das Script übergebe kann ich das Fehlen von Dateien ausschließen.

7.0:
Code:
testteam@test01:/import/testumgebung/ > ./test-configer < test_daten
DATEN/DATEN/DATEN/DATEN
DATEN/DATEN/DATEN/DATEN
DATEN/DATEN/DATEN/DATEN
DATEN/DATEN/DATEN/DATEN
DATEN/DATEN/DATEN/DATEN
DATEN/DATEN/DATEN/DATEN
DATEN/DATEN/DATEN/DATEN
DATEN/DATEN/DATEN/DATEN
DATEN/DATEN/DATEN/DATEN

8.1:
Code:
testteam@test02:/import/testumgebung/ > ./test-configer < test_daten

und wie gesagt, prinzipiell führe ich beides vom gleichen ort aus, auch wenn das verschiedene Rechner sind.
Darum verstehe ich nicht, warum nichtmal Fehlermeldungen kommen.
 
Zuletzt bearbeitet:
Ja, ich habe auch noch zusätzlich Debugausgaben bezüglich der Variablen eingebaut, die Variablen enthalten auch alle Brav die Inhalte die sie haben sollten.

Inzwischen vermute ich das es mit meiner while-schleife zusammenhängt, weiss aber nicht woran es da hängt.

der Anfang der einen Funktion sieht folgendermaßen aus:
Code:
function counterprint()
{
echo "function counterprint"
   export COUNT=0
   while [ $COUNT -lt $AMOUNT ]; do

   export BITREST=$((AMOUNT -$COUNT))
   export BREITEFLAG=1bit
echo "8bit-Check"

wie ich darauf komme schließe ich aus folgendem:
und zwar wird das function counterprint (echo "function counterprint") noch ausgegeben, das 8bit-Check (echo "8bit-Check") jedoch nicht mehr !
 
hast du auch Test-daten in test_daten auf deiner 8.0 Installation?

Ich habe auch schon Pferde kotzen sehen ;-)

Apropos: wo ist dein done?
 
Ja, wie schon gesagt, es ist ein und die Selbe Datei bei beiden Rechnern, die über nfs auf beiden Kisten jeweils in das gleiche Verzeichnis gemountet werden.

also gleiche Datein und gleicher Inhalt, nur das auf dem 8.1 Rechner nichts Ausgegeben wird. (womit wir wieder am Anfang währen)

was das done angeht, das ist nur der Anfang der funktion und while schleife, also nicht komplett. das kommt noch ein weilchen später.
ich kann den Code leider nicht komplett weil mir dann das Board hier meldet, das ich zuviele Grafiken verwenden würde.
 
Zuletzt bearbeitet:
Sollte da nicht

Code:
$(([B]$[/B]AMOUNT-$COUNT))

stehen? Wie gross ist $AMOUNT?
 
Xanti schrieb:
Sollte da nicht

Code:
$(([B]$[/B]AMOUNT-$COUNT))

stehen? Wie gross ist $AMOUNT?

es ist egal ob man nun $((AMOUNT-$COUNT)) schreibt oder
$(($AMOUNT-$COUNT))

wenn man diesen ausdruck hat, kann man bei der ersten Variable das $ weglassen.

Was den Wert von Amount angeht, der ist komischerweise 0,
könnte das Problem sein, ich untersuche erstmal in die Richtung !
--

EDIT: Aktueller Stand der Untersuchung:
Aus meinem String den ich auslese wird mir auf der 8.1 Kiste irgendwann die letzte Zahl (AMOUNT) entfernt, darum ist AMOUNT zum beginn der while Schleife 0.
Nur weiss ich noch nicht woran es liegt, denn auf der 7.0 Kiste tut er das nicht. Untersuchungen gehen weiter.
 
Zuletzt bearbeitet:
M-Grulich schrieb:
ich kann den Code leider nicht komplett weil mir dann das Board hier meldet, das ich zuviele Grafiken verwenden würde.
Sorry, mit solchen Fragmenten kann wohl kaum jemand etwas Sinnvolles dazu sagen.

Deaktiviere beim Posten mal die Smilies.
[x]Grafische Smileys deaktivieren

In erster Linie musst du dich halt Stück für Stück da durch debuggen.
Wenn der Code von dir selbst ist (so schriebst du ja), weisst du selbst am besten was wo passiert.

Bau dir echo $VAR an allen Stellen ein und hop da mit set -x durch.
Viel Glück
Du bist dir sicher, dass die Daten lesbar vorliegen?

Gruß Wolfgang
 
Also, ... Problem gefunden !

in dem Script ermittle ich die Länge der Zeile und prüfe ob das erste Zeichen ein leerzeichen ist, und wenn das so ist setze ich die Variable ohne leerzeichen neu.

Code:
LAENGE=${#LINE}
      LINE=${LINE:1:$LAENGE}

Nur ist auf der 7.0 mein String 24 Zeichen lang, wie ich es erwarten würde, weils einfach so ist.
Jedoch ist auf der 8.1 mein String dort statt 24, 23 Zeichen lang, was meinen String immer am Ende verkürzt.

Bugfixx ist ganz einfach:
Code:
LINE=${LINE:1}

einfach auf die ermittlung der Länge scheissen !

trotzdem Danke für eure Hilfe
 

Ähnliche Themen

NAS-Drive Mount in Bash-Script über crontab

Apache Restart funktioniert nicht

"Probleme" mit einem Kernelmodul

Suse 11.1 Probleme mit KSmoothdock 4.5

Problem mit Apache2 + MySQL Server

Zurück
Oben