blob: b8ef3092b1f3d9cc620cbb4c83d7390720efffbf (
plain) (
tree)
|
|
# Run a command and ignore specified exit values
# There should be at least two arguments
if [ "$#" -eq 0 ] ; then
printf >&2 'igs: Need an ignore list x,y,z and a command\n';
exit 2
fi
# The list of values to ignore is the first argument; add a trailing comma for
# ease of parsing; shift it off
igs=$1,
shift
# Run the command in the remaining arguments and grab its exit value
"$@"
ex=$?
# Iterate through the ignored exit values by chopping its variable and checking
# each value until it's empty
while [ -n "$igs" ] ; do
# Get the first exit value in the remaining list
ig=${igs%%,*}
# If it matches the command's exit value, exit with 0
[ "$((ig == ex))" -eq 1 ] && exit 0
# Chop it off the list for the next iteration
igs=${igs#*,}
done
# If we got right through the list, we exit with the same value as the command;
# i.e. we are not ignoring the value
exit "$ex"
|