Shell中判断字符串是否为数字的6种方法分享
本篇文章主要介绍了"shell判断字符串是否为数字",主要涉及到shell判断字符串是否为数字方面的内容,对于shell判断字符串是否为数字感兴趣的同学可以参考一下。
#!/bin/bash
##方法1
a=1234;echo"$a"|[-n"`sed-n'/^[0-9][0-9]*$/p'`"]&&echostringaisnumbers
第一个-n是shell的测试标志,对后面的串"`sed-n'/^[0-9][0-9]*$/p'`"进行测试,如果非空,则结果为真。
sed默认会显示所有输入行信息的,sed的“-n”选项是让sed不要显示,而只显示我们所需要的内容:即后面的表达式所匹配的行,这是通过表达式中加入“p”命令来实现的。
/^[0-9][0-9]*$/他的含义是匹配至少由一位数字构成的行
##方法2,可以,不过不是bash实现的,是使用了grep的正则
#ifgrep'^[[:digit:]]*$'<<<"$1";then
#echo"$1isnumber."
#else
#echo'no.'
#fi
##方法3
#if["$1"-gt0]2>/dev/null;then
#echo"$1isnumber."
#else
#echo'no.'
#fi
##方法4,case
#case"$1"in
#[1-9][0-9]*)
#echo"$1isnumber."
#;;
#*)
#;;
#esac
##方法5,awk
#echo$1|awk'{print($0~/^[-]?([0-9])+[.]?([0-9])+$/)?"number":"string"}'
##方法5,awk
#if[-n"$(echo$1|sed-n"/^[0-9]\+$/p")"];then
#echo"$1isnumber."
#else
#echo'no.'
#fi
##方法6,expr
expr$1"+"10&>/dev/null
if[$?-eq0];then
echo"$1isnumber"
else
echo"$1notnumber"
fi