PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : shellscript



otelo
30-01-2003, 18:54
hi,

ich habe noch eine Frage:

wenn ich in einem Shellscript zB ein mkdir mache, wird der Erfolg/Mißerfolg dieser Aktion als Wert in einer Variable vorgehalten? Kann ich danach eine If Abfrage machen, ob der Befehl erfolgreich ausgeführt wurde? Wenn ja, wie heißt diese Variable und welchen Wert kann sie enthalten?

Gruß und danke
otelo

3qualizer
30-01-2003, 19:00
z.B.
[Befehl]
if test $? = 0; then
[Befehle];
fi;oder

if [Befehl]; then
[Befehle];
fi;
Eric

otelo
30-01-2003, 19:23
sorry eric,

ich hab da noch ein kleines verständnisproblem (kenn mich in der shellprogrammierung nicht so aus)

wenn ich den mkdir -befehl abragen wollte, dann müsste ich folgendes schreiben?

mkdir test

if test $? = 0; then
echo "mkdir fehlgeschlagen";
fi

richtig?

Gruß
otelo

3qualizer
30-01-2003, 19:35
jup

oder eben direkt:
if ! mkdir test; then
echo "mkdir fehlgeschlagen";
fi

Eric

brotzi
30-01-2003, 19:37
Noch einfacher:

if mkdir test ; then
echo fehlgeschlagen
fi


hehe, da ist mir wohl einer zuvor gekommen

otelo
30-01-2003, 19:48
cool danke :-) ich werde es gleich ausprobieren.

darf ich noch eine Frage stellen? ist auch wirklich die letzte für heute ;)


wenn ich jetzt bei meinen ganzen if abfragen jeweils einen Status1..n mit Wert 0 für error und 1 für ok setze wie heíßt dann in einer neuen if Abfrage der logische Operator für ein "oder" ?

mit

if stat1=0 or stat2=0 or ... ; then

geht es nicht.

Danke
Gruß
otelo

3qualizer
30-01-2003, 19:56
if test stat1 = 0 || test stat2 = 0; then
...;
fi

Eric

otelo
30-01-2003, 20:02
thx Eric :-]]

Schönen Abend noch
Gruß
otelo

anmate
31-01-2003, 11:12
du musst dir nur eines merken, 0 ist true bei UNIX und alles andere ist false;
bei C ist es genau anders herum
habe auch ein schönes Skript zur SHELL-Prog
einfach melden...:D

otelo
31-01-2003, 13:27
nun hab ich gestern abend rumgestestet und bis auf eine Abfrage funktionieren sie mittlerweile auch alle.

bei dieser hier gibt vergibt er für stat10 immer 0...

if /etc/rc.d/init.d/httpd start; then
stat10="1";
else stat10="0";
fi

warum? ist an der was falsch?

Gruß
otelo

PS: @anmate eine Skript zur Shellprogrammierung wär schon was feines :)

buffer_7
03-02-2003, 14:01
Hallo,

Ich würde es so lösen(gibt bestimmt bessere Lösungen, aber es funzt)

/etc/rc.d/init.d/httpd start
if [ "$?" = "0" ];then
stat10="1"
else stat10="0";
fi

Wobei eine 0 in $? bedeutet, daß alles in Ordnung ist.
evtl. die stat10 umdrehen.

/etc/rc.d/init.d/httpd start
if [ "$?" = "0" ];then
stat10="0"
else stat10="1";
fi


hoffe konnte helfen

In diesem Sinne
Ihr und Euer

buffer_7

3qualizer
03-02-2003, 15:13
bei dieser hier gibt vergibt er für stat10 immer 0...

if /etc/rc.d/init.d/httpd start; then
stat10="1";
else stat10="0";
fiIst der Start denn erfolgreich gewesen? Was kommt hierbei:

/etc/rc.d/init.d/httpd start;
echo $?;
@buffer_7

/etc/rc.d/init.d/httpd start
if [ "$?" = "0" ];then
stat10="0"
else stat10="1";
fiDas wäre also etwa sowas ;)
/etc/rc.d/init.d/httpd start;
stat10=$?;
Eric

otelo
03-02-2003, 15:42
also, wenn ich das so mache wie ihr beiden mir das vorgeschlagen habe, klappt es leider auch nicht. nach einem start/stop/restart steht in $? bei mir immer 255 egal ob es geklappt hat. müßte der wert nicht zumindest mal variieren bei ok/nichtok? und wieso steht da 255 und nicht 0? :confused:

ich habe auf der Maschine noch RH6.2

Gruß
otelo