Frage von Scriptanfänger (update)

(sorry, falschen Versuch gezeigt, deshalb neu)
Hallo,

ich möchte abfangen wenn eine Variable nicht gesetzt ist.

echo $ORACLE_SID
echo $DATA_HOME
echo $ORACLE_HOME
echo $ORACLE_BASE

[-z $ORACLE_SID] && exit
[-z $DATA_HOME] && exit
[-z $ORACLE_HOME] && exit
[-z $ORACLE_BASE] && exit

echo ‚Verzeichnisse anlegen‘

dabei kommt dann aber folgendes raus:

. ./testscript
PPSYS
/app/kops
/app/kops/oracle/1020/product/10.2.0
/app/kops/oracle/1020
bash: [: missing ]' bash: [: missing ]’
bash: [: missing ]' bash: [: missing ]’
Verzeichnisse anlegen

Wie muß ich das umschreiben damit ich diese Meldungen nicht mehr bekomme ?

Ansonsten scheint es zu funktionieren, wenn ich eine variable lösche, dann stoppt schmeißt es mich an der passenden Prüfstelle raus (wobei ich eins zu weit raus fliege…)

Vielen Dank im Voraus

Grüße

Chris

PRE tags sind toll.

> [-z $ORACLE\_SID] && exit  
> [-z $DATA\_HOME] && exit  
> [-z $ORACLE\_HOME] && exit  
> [-z $ORACLE\_BASE] && exit

dabei kommt dann aber folgendes raus:

> PPSYS  
> /app/kops  
> /app/kops/oracle/1020/product/10.2.0  
> /app/kops/oracle/1020  
> bash: [: missing `]'  
> bash: [: missing `]'  
> bash: [: missing `]'  
> bash: [: missing `]'


[-z $ORACLE\_SID] && exit

(Da ist ein fettest Leerzeichen. Es ist wirklich fett.)

Darueberhinaus wuerde ich

[-z "$ORACLE\_SID"] && exit

bzw. aus aesthetischen Gruenden doch einfach

test -z "$ORACLE\_SID" && exit

oder noch besser

test -z "$ORACLE\_SID" && exit 1

empfehlen.

(wobei ich eins zu weit raus fliege…)

Haeh?

Gruss vom Frank.

Hallo Frank,

(Da ist ein fettest Leerzeichen. Es ist wirklich fett.)

ja, genau das war´s… danke dir !
Deinen Vorschlag das umzuschreiben habe ich auch umgesetzt, liest sich schöner…

(wobei ich eins zu weit raus fliege…)

Haeh?

Damit meine ich das ich aus der Bash fliege.
Ich arbeite unter unix, da habe ich standartmäßig die ksh. Ich wechsle also in die Bash und führe das Script aus. Wenn ich eine Variable „unset“ habe, dann schmeißt mich das Script zwar richtigerweise raus, allerdings auch gleich aus der Bash, ich bin dann wieder in der ksh

Grüße

Chris

(wobei ich eins zu weit raus fliege…)

Haeh?

Damit meine ich das ich aus der Bash fliege.
Ich arbeite unter unix, da habe ich standartmäßig die ksh. Ich
wechsle also in die Bash und führe das Script aus. Wenn ich
eine Variable „unset“ habe, dann schmeißt mich das Script zwar
richtigerweise raus, allerdings auch gleich aus der Bash, ich
bin dann wieder in der ksh

Aeh… wie startest Du das denn?

Gruss vom Frank.

Aeh… wie startest Du das denn?

ich habe dem Script x-Rechte gegeben. dann rufe ich das Script einfach auf.

Grüße

Chris

Aeh… wie startest Du das denn?

ich habe dem Script x-Rechte gegeben. dann rufe ich das Script
einfach auf.

Frank wollte eher die Kommandozeile für den Start der Bash wissen. Wenn Du „nur“ das Skript startest (also #/bin/bash am Script-Anfang), dann ist mit dem Skript-Ende natürlich auch die Shell beendet.

Hi,

achso, naja, so halt

$ su - orakops
Password:
Sun Microsystems Inc. SunOS 5.10 Generic January 2005

orakops@kops-202n> bash
orakops@kops-202n> cd local/create_db/
orakops@kops-202n> create_Instance

Noch etwas, ich möchte eine Datei aus einer Grunddatei erzeugen und dabei 2 Textteile tauschen (automatisiert)
bis jetzt mache ich das folgendermaßen:

sed -e s/oracle_sid/$oracle_sid/g init.ora | sed -e s/ORACLE_SID/$ORACLE_SID/g > init$ORACLE_SID.ora

Ist das so in Ordnung oder gibt es eine schönere Lösung ? (Auch in Hinblick darauf das ich evtl. später mal mehrere Einträge ändern möchte)

Grüße

Chris