W skrypcie bash
muszę sprawdzić istnienie kilku plików.Bash: Jak sprawdzić, czy istnieją pewne pliki?
wiem niezgrabny sposób, aby zrobić to, co jest w następujący sposób, ale oznaczałoby to, że mój główny program musi być w tym brzydkim zagnieżdżonej strukturze:
if [ -f $FILE1 ]
then
if [ -f $FILE2 ]
then
echo OK
# MAIN PROGRAM HERE
fi
fi
Poniższa wersja nie działa:
([ -f $FILE1 ] && [ -f $FILE2 ]) || (echo "NOT FOUND"; exit 1)
echo OK
drukuje
NOT FOUND
OK
Czy istnieje elegancki sposób zrobić to prawo?
AKTUALIZACJA: Zobacz zaakceptowaną odpowiedź. Ponadto, pod względem elegancji Lubię 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"
Dzięki, że wygląda dobrze. Właśnie "lub" (||) powinno być "i" (&&), jak sądzę. – Frank
naprawiono już :) trudne z logiką wieczorem :) –