Если umount возвращает 0 в качестве кода выхода, этот сценарий продолжается. Несколько раз код выхода - 127, я в порядке, и сценарий должен продолжаться. Как изменить скрипт для выполнения такого «белого списка» допустимых кодов выхода umount?
set -e
sudo umount /drive || [ $? -eq 0 ]
echo do stuff
Если такая методика существует, у меня есть много вариантов использования.
Этот ответ в комментарии от glenn jackman работает для меня:
mycmd || [ $? -eq 127 ] || exit
Попробуем это:
if sudo mount /drive; then
: # exit status 0
else
rc=$?
[ $rc -ne 127 ] && exit $rc
fi
Протестируйте это - эксперимент с разными значениями для status
env status=0 bash -e -c '
mycmd() { return $1; }
if mycmd $status; then
:
else
rc=$?
[ $rc -ne 127 ] && exit $rc
fi
echo OK
'
Вы можете использовать оператор case для белого списка или выполнить другое действие.
sudo umount /drive
case $? in
0)
;;
127)
;;
*)
echo 'bailing!'
exit 1
;;
esac
echo 'doing more stuff'
Этот ответ в комментарии от glenn jackman работает для меня:
mycmd || [ $? -eq 127 ] || exit
Попробуем это:
if sudo mount /drive; then
: # exit status 0
else
rc=$?
[ $rc -ne 127 ] && exit $rc
fi
Протестируйте это - эксперимент с разными значениями для status
env status=0 bash -e -c '
mycmd() { return $1; }
if mycmd $status; then
:
else
rc=$?
[ $rc -ne 127 ] && exit $rc
fi
echo OK
'
Вы можете использовать оператор case для белого списка или выполнить другое действие.
sudo umount /drive
case $? in
0)
;;
127)
;;
*)
echo 'bailing!'
exit 1
;;
esac
echo 'doing more stuff'