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