龙空技术网

shell脚本:六种判断输入是否为数值

IT小明 869

前言:

此刻看官们对“正则验证是否为数字”大概比较关心,你们都想要剖析一些“正则验证是否为数字”的相关内容。那么小编在网上收集了一些对于“正则验证是否为数字””的相关文章,希望我们能喜欢,大家快快来学习一下吧!

#!/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

标签: #正则验证是否为数字