Shell_Noob Geschrieben 30. Dezember 2009 Geschrieben 30. Dezember 2009 Hallo zusammen, ich bin neu in diesem Bereich und hoffe hier bei euch etwas Hilfe zu finden. Ich muss ein Shell Skript anpassen, welches von einem anderen Shell Skript zwei Parameter übergeben bekommt. Anschließend meldet er sich bei der Oracle Datenbank an und führt einige SQL Skripte aus. Vor dem Ausführen der Skripte werden die beiden Parameter als Bindvariablen in Oracle hinterlegt. Jetzt kommt mein kleines Problem: Bei einem SQL Skript muss eine Fallunterscheidung eingebaut werden. Er soll nur dann ausgeführt werden, wenn der Parameter2 einen bestimmten Wert (AKT) übergeben bekommen hat. Ansonsten soll er nicht ausgeführt werden. Das Skript sieht im Moment in etwa so aus: P1=$3 P2=$4 sqlplus -s $1@$2 <<EOF 1>>$LOGDIR/$SessLogFile 2>&1 define date = $P1 define p_name = $P2 @"SQL_Skript1.sql" @"SQL_Skript2.sql" @"SQL_Skript3.sql" exit EOF Ich habe mir überlegt die IF-Anweisung vor der Anmeldung in SQLPlus zu machen. D.h. mein Skript würde in etwa so aussehen: P1=$3 P2=$4 IF [$P2 == AKT] THEN sqlplus -s $1@$2 <<EOF 1>>$LOGDIR/$SessLogFile 2>&1 define date = $P1 define p_name = $P2 @"SQL_Skript1.sql" @"SQL_Skript2.sql" @"SQL_Skript3.sql" exit ELSE sqlplus -s $1@$2 <<EOF 1>>$LOGDIR/$SessLogFile 2>&1 define date = $P1 define p_name = $P2 @"SQL_Skript2.sql" @"SQL_Skript3.sql" exit FI EOF Leider scheint das Skript bei mir die IF - Anweisung zu ignorieren. Ich würde mich über Hinweise freuen. Danke und viele Grüße, Dietmar Zitieren
robotto7831a Geschrieben 30. Dezember 2009 Geschrieben 30. Dezember 2009 Hallo, ich bin jetzt zwar kein Shellskript Experte aber müsste der Text AKT nicht in Hochkommas oder Anführungszeichen stehen? Und laut dieser Seite müsste die IF Anweisung in etwa so aussehen. s1 = s2 Die Zeichenfolgen s1 und s2 sind identisch Frank Zitieren
Shell_Noob Geschrieben 30. Dezember 2009 Autor Geschrieben 30. Dezember 2009 Hallo, danke dir für den Hinweis. Ich habe das in einem Tutorium gesehen, dass Strings so vergliechen werden können. Ich habe es aber auch mit = usw. versucht. Irgendwie scheint er das zu ignorieren. Von der Logik sollte es funktionieren. VG, Dietmar Zitieren
robotto7831a Geschrieben 30. Dezember 2009 Geschrieben 30. Dezember 2009 Also folgendes funktioniert bei mir in einer Bash. p1=$1 if [ $p1 = 'a' ]; then echo Hallo else echo nein fi [/code] Frank Zitieren
Shell_Noob Geschrieben 30. Dezember 2009 Autor Geschrieben 30. Dezember 2009 Ich habe es eben getestet und er führt das Script trotzdem aus. Ich bin etwas ratlos ... Ich werde dann mal weiter probieren. Danke dir für die Hilfe! Zitieren
robotto7831a Geschrieben 30. Dezember 2009 Geschrieben 30. Dezember 2009 Mit meinen drei eingebauten Änderungen? Frank Zitieren
Shell_Noob Geschrieben 30. Dezember 2009 Autor Geschrieben 30. Dezember 2009 ich habe jetzt mal dein Teil genommen und ein extra Skript erstellt. diesen dann im Putty ausgeführt und die IF Anweisung funktioniert. An dieser Stelle erstmal danke. Wenn ich jetzt die SQLPlus Zeile einbaue, dann kriege ich einen Syntax Fehler. Ich werde mal selber weiter schauen. Danke und viele Grüße, Dietmar Zitieren
Mr Unix Geschrieben 5. Januar 2010 Geschrieben 5. Januar 2010 Wenn ich jetzt die SQLPlus Zeile einbaue, dann kriege ich einen Syntax Fehler. Ich werde mal selber weiter schauen. Joar. Wenn du sowas wie <<EOF machst, dann solltest das an der passenden Stelle auch wieder zugehen. An deiner Stelle wuerde ich mit mktemp einfach eine blanke, leere Datei erstellen, dort die Anweisungen einstecken und das dann dem Binary uebergehen. Zitieren
4psh Geschrieben 12. Januar 2010 Geschrieben 12. Januar 2010 hi also ignorieren könnte er die if - Anweisung aus zwei Gründen: a) if sollte nicht groß geschrieben werden - weiss ich aber nicht genau - habs bisher immer nur klein gesehen. aber ist auf jeden Fall relevant. Und zwar die Syntax des Befehls 'test', der hier hinter den [ ] steckt. Und diese Syntax verlangt, dass nach [ und vor ] jeweils ein Leerzeichen kommt. Hab ich auch mal lange gesucht, bis ich das gefunden hatte hth 4psh Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.