In einem bash
Skript muss ich auf das Vorhandensein mehrerer Dateien prüfen.Bash: Wie überprüfe ich, ob bestimmte Dateien existieren?
Ich kenne eine unangenehme Art und Weise, es zu tun, die wie folgt, aber das würde bedeuten, dass mein Hauptprogramm innerhalb dieser hässlichen verschachtelte Struktur zu sein hat:
if [ -f $FILE1 ]
then
if [ -f $FILE2 ]
then
echo OK
# MAIN PROGRAM HERE
fi
fi
Die folgende Version nicht funktioniert:
([ -f $FILE1 ] && [ -f $FILE2 ]) || (echo "NOT FOUND"; exit 1)
echo OK
Er druckt
NOT FOUND
OK
gibt es eine elegante Möglichkeit, dieses Recht zu tun?
UPDATE: Siehe die angenommene Antwort. Darüber hinaus im Hinblick auf die Eleganz mag ich Jonathan Leffler's answer:
arg0=$(basename $0 .sh)
error()
{
echo "$arg0: [email protected]" 1>&2
exit 1
}
[ -f $FILE2 ] || error "$FILE2 not found"
[ -f $FILE1 ] || error "$FILE1 not found"
Danke, das sieht gut aus. Nur das 'oder' (||) sollte ein 'und' (&&) sein, denke ich. – Frank
schon behoben :) schwierig mit Logik am Abend :) –