Сначала я запускаю его в подоболочке и ловлю код выхода и выхода
result=$(hg update 2>&1)
exit_code=$?
тогда
case $exit_code in
0)
success
;;
[1-5])
failure x
;;
[6-9])
failure y
;;
255)
failure z
;;
*) # Default
echo "it's a trap"
;;
esac
Или вы можете, если вы заинтересованы в истинном / ложном статусе, запустить
result=$(hg update 2>&1) && echo "Success"
или
result=$(hg update 2>&1) || echo "Failure"