当前位置: 技术问答>linux和unix
关于rehat Enterprise 6.1 grep的诡异问题
来源: 互联网 发布时间:2017-01-31
本文导语: 安装好rhel6.1, 运行: echo 22|grep [0-9] 查看返回值:echo $? 结果为:0 然后将个安装好的系统使用ghost11.exe进行备份,再在另外一台机器上面进行还原,再次运行上面的命令 echo 22|grep [0-9] echo $? 结果为:1 为了保...
安装好rhel6.1,
运行: echo 22|grep [0-9]
查看返回值:echo $?
结果为:0
然后将个安装好的系统使用ghost11.exe进行备份,再在另外一台机器上面进行还原,再次运行上面的命令
echo 22|grep [0-9]
echo $?
结果为:1
为了保证22为数字,我又使用了一下语句:
echo 22|awk '{printf("%d", $1)}'|grep [0-9]
echo $?
结果还是:1
也就是现在grep出来的结果不认为22是个数字。
不知道是因为ghost在备份或者还原的过程中丢失了什么东西,还是rhel6.1的问题。
请教各位,在shell编程时是否还有更好的办法来判断一个参数是否为一个数字。
运行: echo 22|grep [0-9]
查看返回值:echo $?
结果为:0
然后将个安装好的系统使用ghost11.exe进行备份,再在另外一台机器上面进行还原,再次运行上面的命令
echo 22|grep [0-9]
echo $?
结果为:1
为了保证22为数字,我又使用了一下语句:
echo 22|awk '{printf("%d", $1)}'|grep [0-9]
echo $?
结果还是:1
也就是现在grep出来的结果不认为22是个数字。
不知道是因为ghost在备份或者还原的过程中丢失了什么东西,还是rhel6.1的问题。
请教各位,在shell编程时是否还有更好的办法来判断一个参数是否为一个数字。
|
以前在网上看到一个挺好的判断参数是否为数字的方法:
#!/bin/sh
var=$(echo $1|bc 2>/dev/null)
if [[ $var != $1 ]]
then
echo "$1 isn't a number!"
exit 1
fi
if echo $1|grep "." >/dev/null 2>&1
then
echo "$1 is float a number!"
else
echo "$1 is integer a number!"
fi