Re: bash: for-Schleife abbrechen
Am Freitag, 30. April 2004 21:05 schrieb Bertram Scharpf:
> Hallo,
>
> 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.'
>
> Derzeit behelfe ich mir mit einem `exit 1'. Das
> funktioniert, weil ich aus einem Makefile heraus aufrufe.
>
> Ich kann mir auch behelfen mit:
>
> $ r=0 ; for i in a b c ; do test -f $i ; r=$? ; test $r -eq 0
> || break ;
>
> > ls -l $r ; done ; test $r -ne 0 || echo 'All files exist.'
>
> Gibt es elegantere Lösungen?
Ich würde es so machen (das Ergebnis von ls direkt auswerten):
rc=0
for i in a b c ; do
if ! ls -l $i 2>/dev/null; then
rc=1
break
fi
done
test $rc -eq 0 && echo 'All files exist.'
Jan
Reply to: