Mailinglist Archive: opensuse-de (2226 mails)

< Previous Next >
Re: Shellscript-Problem: /bin/sh Funktion while return
  • From: "K. Elo" <maillists@xxxxxx>
  • Date: Mon, 05 Jun 2006 15:29:07 +0300
  • Message-id: <1149510547.3621.20.camel@xxxxxxxxxxxxxxxxxxx>
Hallo Harry, hallo Liste,

2006-06-05 13:37 +0200, Harry Rüter:
> Hallo Liste,
>
> ich zweifle an mir selbst.
> Ich habe schon hunderte von Scripten geschrieben, meistens unter Red
> Hat, aber auch unter Suse.
>
> Folgendes Script sollte eigentlich 0 oder eins zurückgeben,
> es gibt aber immer 0 zurück, da das return in der while-Schleife
> nicht zum Beenden der Funktion führt ...
>
> Bin ich jetzt total verblödet ?
> - ---schnipp---
> #!/bin/sh
>
> testservice()
> {
> WHAT=$1
> PPORT=$2
>
> cat /etc/services|sed 's/ */ /' |\
> while read NAME PORT REST
> do
> if [ "a$NAME" = "a$WHAT" -a "a$PORT" = "a$PPORT" ]
> then
> return 1
> fi
> done

Hier statt
return 0
folgendes:
RET_VAL=$?
return $RET_VAL

So sollte es funktionieren.

> }
>
>
> testservice PARAM1 PARAM2
> RES=$?
>
> if [ $RES -eq 1 ]
> then
> irgendwas
> else
> sonstwas
> fi
>
> - ---schnipp---
>
> Ich bin gespannt, was ihr dazu sagt ...

Ich vermute, das ganze hängt damit zusammen, dass der erste 'return 1'
nur die while-Schleife beendet, so dass 1 das return-Wert der Schleife
ist. Danach wird aber nochmals 'return 0' ausgeführt. Wird aber die
While-Schleife erfolglos durchgeführt, ist das return-Wert gleich 0.

Meine Lösung speichert das return-Wert der While-Schleife und gibt
dieses an den zweiten 'return' als Parameter weiter.

Gruß
Kimmo



--
Um die Liste abzubestellen, schicken Sie eine Mail an:
suse-linux-unsubscribe@xxxxxxxx
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: suse-linux-help@xxxxxxxx

< Previous Next >
Follow Ups
References