The following is POSIX compliant, so it will work in other shells than bash as well. Just checking -z "${scale##*[!0-9]*}" as suggested by another answer here does not take into account that strings starting with zero (except for zero itself) or empty strings are also not valid base-10 integers.
case "$scale" in *[!0-9]*|00123456789]*|0?*|"")
echo "Sorry integers only";;
esac
We need to spell out all valid digits because using a range like 0-9 matches on any character (or possibly multi-character collation element) that sorts in between 0 and 9. Thanks to @stéphane-chazelas for this insight. More about that here: https://lists.gnu.org/archive/html/bug-bash/2021-02/msg00054.html
If negative integers are valid in your use case, you can use:
case "$scale" in *[!0123456789-]*|-|?*-*|0?*|-0|"")
echo "Sorry integers only";;
esac