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

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: