if echo $var | egrep -q '^[0-9]+; then
# $var is a number
else
# $var is not a number
fi
Переменные Shell не имеют никакого типа, таким образом, самый простой путь состоит в том, чтобы использовать команду типа test
возврата:
if [ $var -eq $var 2> /dev/null ]; then ...
(Или иначе синтаксический анализ это с regexp)
Или в ksh93 или в ударе с extglob включенной опцией:
if [[ $var == +([0-9]) ]]; then ...