'-' could never match, remove that alternative (it might have been a
typo of '--', but that is already covered by '*--|--*' ('*' matches
the null string)).
Replace '*--*' with the equivalent '*' ('--' is always present).
It would seem clearer to just replace the whole case command with
something like '[ "$ID" -a "$VERSION_ID" ] && break' (or the
POSIX-non-deprecated equivalent '[ "$ID" ] && [ "$VERSION_ID" ]' ); I
assume a preference of using case here (e.g., to avoid syscall
overhead in case [ is not implemented as a shell builtin (which seems
far-fetched given the context, though)).
esac
case $ID--$VERSION_ID in
- -|*--|--*) continue ;;
- *--*) break ;;
+ *--|--*) continue ;;
+ *) break ;;
esac
done
;;