apt-get update exit status
In your example apt-get update
didn't exit with error,
because it considered the problems as warnings, not as fatally bad.
If there's a really fatal error, then it would exit with non-zero status.
One way to recognize anomalies is by checking for these patterns in stderr
:
- Lines starting with
W:
are warnings - Lines starting with
E:
are errors
You could use something like this to emulate a failure in case the above patterns match, or the exit code of apt-get update
itself is non-zero:
if ! { sudo apt-get update 2>&1 || echo E: update failed; } | grep -q '^[WE]:'; then
echo success
else
echo failure
fi
Note the !
in the if
.
It's because the grep
exits with success if the pattern was matched,
that is if there were errors.
When there are no errors the grep
itself will fail.
So the if
condition is to negate the exit code of the grep
.