我们在写shell脚本的时候常常会有这样的需求:脚本需要传入一个数字参数,所以在接收参数前我们需要判断传入的是否是数字,以防止出错。
看了大家的脚本,采用的思路是用echo+sed,用空字符代替一个字符串中的数字,然后判断输出的字符串是否为空,若为空则为数字,反之则为非数字。 如 a=22 ; b=`echo $a | sed 's/[0-9]//g'` ; [ "$b" = "" ] && echo " a是数字"
从资料上了解到还有一个小方法,分享给大家。
它使用测试符号是双引号(必须是双引号),然后用一个 "=~" 连接 , 后面接对应的正则表达式,以测试数字为例
a=22
if [[ $a =~ ^-?[0-9]+$ ]] ; then #^-?[0-9]+$ 是表示一个数字的正则(包含负数)
echo "a 是数字"
else
echo "a不是数字"
fi
当然测试的内容除了数字也可以是其它字符串
看了大家的脚本,采用的思路是用echo+sed,用空字符代替一个字符串中的数字,然后判断输出的字符串是否为空,若为空则为数字,反之则为非数字。 如 a=22 ; b=`echo $a | sed 's/[0-9]//g'` ; [ "$b" = "" ] && echo " a是数字"
从资料上了解到还有一个小方法,分享给大家。
它使用测试符号是双引号(必须是双引号),然后用一个 "=~" 连接 , 后面接对应的正则表达式,以测试数字为例
a=22
if [[ $a =~ ^-?[0-9]+$ ]] ; then #^-?[0-9]+$ 是表示一个数字的正则(包含负数)
echo "a 是数字"
else
echo "a不是数字"
fi
当然测试的内容除了数字也可以是其它字符串
编辑回复