Возможно, вы захотите взглянуть на встроенную функцию trap
, чтобы посмотреть, будет ли это полезно:
help trap
или
man bash
вы можете установить ловушку для ошибок, подобных этой:
#!/bin/bash
AllowedError=5
SomeErrorHandler () {
(( errcount++ )) # or (( errcount += $? ))
if (( errcount > $AllowedError ))
then
echo "Too many errors"
exit $errcount
fi
}
trap SomeErrorHandler ERR
for i in {1..6}
do
false
echo "Reached $i" # "Reached 6" is never printed
done
echo "completed" # this is never printed
Если вы подсчитываете ошибки (и только в том случае, если они являются ошибками), а не "$?
", вам не нужно беспокоиться о возвращаемых значениях, отличных от нуля или единицы. Например, одно возвращаемое значение 127 сразу бросит вас за порог. Вы также можете зарегистрировать trap
s для других сигналов в дополнение к ERR
.