OS X Shell Variablen und Rückgabewerte?

F

Frank71

Neues Mitglied
Thread Starter
Dabei seit
08.06.2004
Beiträge
7
Reaktionspunkte
0
Hallo,
seit einigen Tagen versuche ich ein Shellscript zu erstellen.
Dabei brauche ich den Rückgabewert, der normalerweise in der Variable $? angegeben wird.

z.B:

#!/bin/sh

# testen ob Server erreichbar
ping -c 1 192.168.10.246 > /dev/null
if [ $? = 1 ]
then
echo Server nicht erreichbar
else
echo Server erreichbar
fi

Die OSX Shell scheint aber keinen Rückgabewert zu unterstützen.

Kann mir da irgendjemand helfen? :confused:
 
Hi,

welche Shell benutzt du denn? Wenn du im Terminal einfach mal "ping blub" eingibst, und dann "echo $?".. sicher, dass du da keinen Rückgabewert erhälst? Also bei mir funktioniert das wunderbar (bash).

Vielleicht liegt der Fehler ansonsten ja auch einfach in deinem Shellskript. Bin nicht so ganz fit, was Shell-Scripting angeht, aber deine If-Abfrage funktioniert so glaube ich nicht unbedingt immer bei allen Unices (z.B. bei AIX geht's so nicht afair). Probier doch mal "if test $? -eq 1".

Ciao
 
Natürlich unterstützt die OSX shell Rückgabewerte, das ist ja schließlich eine ganz normale bash. Allerdings wirst Du nicht glücklich mit dem Skript, weil ping nicht etwa Rückgabewert 1 gibt, wenn der Server nicht erreichbar ist, sondern nur wenn ein Fehler auftritt. Daß der Server nicht erreichbar ist, sagt ping in seiner Ausgabe und beendet sich dann normal mit Rückgabewert 0.

Ich hatte mal ein ähnliches Problem, da wollte ich aber nur wissen ob ein Dienst erreichbar ist. Das mache ich jetzt mit nc:

if ! echo quit | nc 192.168.1.11 22 >/dev/null 2>&1
then echo Dienst nicht erreichbar

nc kannste über fink installieren.
 
Hallo
Zeeke,

Ich habe keine Ahnung welche Shell ich unter OSX 10.3 benutze.

Ich habe einfach eine Datei erstellt die ich dann mit ./ starte.

Mit der if Anweisung hat es nichts zu tun, auch wenn ich mir gleich mit
echo $? >> logdatei
anzeigen lasse bekomme ich immer 0 zurück.
 
Danke weinford,

Dein Vorschlag funktioniert Perfekt.
Und das beste daran - ich musste nc noch nicht einmal installieren. Weil es anscheinend schon drauf ist.

clap

Schönen Tag noch
Frank71
 
Freut mich! :) Ja, und der Tag ist so schön, ich glaub ich mach mal Feierabend :p
Euch auch nen schönen Tag :)
 
Original geschrieben von Frank71
...
Ich habe keine Ahnung welche Shell ich unter OSX 10.3 benutze.
...

um herauszufinden, welche Shell Du benutzt gibst Du folgendes Kommando ein:
echo $SHELL

Frank hat übrigens ein Skript für die einfache Bourne Shell geschrieben, was man an der ersten Zeile sieht.
Dies ist AFAIK unter Mac OS X mit der bash identisch.

@ weinford
schönes shellkonstrukt ;)
 
Zurück
Oben Unten