[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: bash: for-Schleife abbrechen



Hallo,

Am Samstag, 01. Mai 2004, 13:30:43 +0200 schrieb Christian Bodenstedt:
> On Fri, 30 Apr 2004 21:05:09 +0200
> Bertram Scharpf <b.scharpf@tesionmail.de> wrote:
> 
> > eine for-Schleife möchte ich abbrechen, wenn darin ein Fehler
> > auftritt. Der Rückgabewert soll dann der des gescheiterten
> > Kommandos sein. Also in etwa so:
> > 
> >   $ for f in file1 file2 file3 ; do test -f $f || my_break ;
> >   > ls -l $r ; done && echo 'All files exist.'
> > 
> > [...] 
> > 
> > Gibt es elegantere Lösungen?

> Um das Exitvalue von "test -f" oder was auch immer im Fehlerfall zu
> erhalten sollte mit der bash folgendes funktionieren:
> 
>   ( for i in  gibs gar nich;  do   
>        test -f $i||exit $?;      
>        echo "datei $i existiert; 
>   done ); echo exitval: $?

Gute Idee!

Mir ist inzwischen selber noch eine Lösung mit einer Funktion
eingefallen:

  $ forfunc() { for i in a b c ; do test -f $i || return $? ; ls -l $i ;
  > done } ; forfunc && echo 'All files exist.' ; unset forfunc

Gefällt mir vom Gesichtspunkt Eleganz aber nicht wesentlich
besser ...

Gruß
Bertram


-- 
Bertram Scharpf
Stuttgart, Deutschland/Germany
http://www.bertram-scharpf.de



Reply to: