Os seguintes números inteiros detectados, positivos ou negativos, e funcionam sob dash
e são POSIX:
Opção 1
echo "$1" | grep -Eq '^[+-]?[0-9]+$' && echo "It's an integer"
Opção 2
case "${1#[+-]}" in
''|*[!0-9]*)
echo "Not an integer" ;;
*)
echo "Integer" ;;
esac
Ou, com um pouco de uso do comando :
(nop):
! case ${1#[+-]} in *[!0-9]*) :;; ?*) ! :;; esac && echo Integer