shell脚本如何判断变量为数字?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本如何判断变量为数字?相关的知识,希望对你有一定的参考价值。

参考技术A #!/bin/bash

##
方法1
a=1234;echo
"$a"|[
-n
"`sed
-n
'/^[0-9][0-9]*$/p'`"
]
&&
echo
string
a
is
numbers
第一个-n是shell的测试标志,对后面的串"`sed
-n
'/^[0-9][0-9]*$/p'`"
进行测试,如果非空,则结果为真。
sed默认会显示所有输入行信息的,sed
的“-n”选项是让sed不要显示,而只显示我们所需要的内容:即后面的表达式所匹配的行,这是通过表达式中加入“p”命令来实现的。
/^[0-9][0-9]*$/他的含义是匹配至少由一位数字构成的行

##
方法2,
可以,不过不是bash实现的,是使用了grep的正则
#if
grep
'^[[:digit:]]*$'
<<<
"$1";then
#
echo
"$1
is
number."
#else
#
echo
'no.'
#fi

##
方法3
#if
[
"$1"
-gt
0
]
2>/dev/null
;then
#
echo
"$1
is
number."
#else
#
echo
'no.'
#fi

##
方法4,case
#case
"$1"
in
#
[1-9][0-9]*)
#
echo
"$1
is
number."
#
;;
#
*)
#
;;
#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
"$1
is
number."
#else
#
echo
'no.'
#fi

##
方法6,expr
expr
$1
"+"
10
&>
/dev/null
if
[
$?
-eq
0
];then
echo
"$1
is
number"
else
echo
"$1
not
number"
fi

以上是关于shell脚本如何判断变量为数字?的主要内容,如果未能解决你的问题,请参考以下文章

Linux下shell脚本中怎么比较两个数字

shell 脚本如何提取整数部分

Shell脚本变量判断参数命令

shell 脚本中判断是不是大于一个变量

怎么样判断一个变量是数字或字符 shell

shell脚本判断的问题