如果umount
返回 0 作为退出代码,则此脚本将继续运行。有时,退出代码是 127,我对此表示同意,脚本应该继续运行。我如何修改脚本以对允许的卸载退出代码进行“白名单化”?
set -e
sudo umount /drive || [ $? -eq 0 ]
echo do stuff
如果存在这样的技术,我有很多用例可以使用它。
答案1
我们来试试这个:
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
'
答案2
您可以使用 case 语句将内容列入白名单或者采取其他操作。
sudo umount /drive
case $? in
0)
;;
127)
;;
*)
echo 'bailing!'
exit 1
;;
esac
echo 'doing more stuff'
答案3
这Glenn Jackman 的评论回答对我有用:
mycmd || [ $? -eq 127 ] || exit