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脚本如何判断变量为数字?的主要内容,如果未能解决你的问题,请参考以下文章