方法一:使用expr,看该数字是否可以进行加运算
[root@manager day4]# cat ifnum.sh
#!/bin/bash
#*************************************************************
#Author: pyy
#Date: 2020-06-15
#FileName: ifnum.sh
#*************************************************************
#判断用户输入的是否是数字
read -p "请输入:" num
#方法1:
if expr $num + 1 &>/dev/null
then
echo "是数字!"
else
echo "不是数字!"
fi
方法二:判断该数字是否与(数字)0进行比较
if [ $num -gt 0 ] 2>/dev/null
then
echo "是数字!"
else
echo "不是数字!"
fi
方法三:使用正则匹配的方式:以数字开头,以数字结尾
if [[ $num =~ ^[0-9]+$ ]]
then
echo "是数字!"
else
echo "不是数字!"
fi
方法四:使用sed的方式进行替换:将数字全替换成空,若替换之后全为数字则字符串为空,否则不为空
#方法4:打印变量通过sed替换,若执行替换后的变量为空,则为数字
if [ $(echo $num | sed 's/[0-9]*/ /g')=" " ] &>/dev/null
then
echo "是数字!"
else
echo "不是数字!"
fi
方法五:使用case判断
case $num in
[1-9][0-9]*)
echo "是数字!"
;;
*)
echo "不是数字!"
;;
esac
方法六:用变量的子串替换
思路:如果num的长度不为0,并且把num中的非数字部分删除,然后看结果是不是等于num本身,如果两者成立,那么就是数字,反之亦然。
read -p "plz input a number: " n
if [ -n $n -a $n = ${n//[^0-9]/} ]
then
echo yes
else
echo no
fi