想把输入值限定在0-23之间,请问用grep如何检查合法性???
发表于 : 2008-04-22 16:15
想把输入值限定在0-23之间,请问用grep如何检查合法性???
代码: 全选
$ read i
43
Exit status: 0
yaoms@yaoms-laptop:~
$ echo $i
43
Exit status: 0
yaoms@yaoms-laptop:~
$ expr $i \> 0 && expr $i \< 23
1
0
Exit status: 1
yaoms@yaoms-laptop:~
$
代码: 全选
read i
grep -E '^(0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23)$' <<<"$i"
。。。。BTBigSnake.NET 写了:既然一定要用grep....代码: 全选
read i grep -E '^(0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23)$' <<<"$i"
yaoms 写了:。。。。BTBigSnake.NET 写了:既然一定要用grep....代码: 全选
read i grep -E '^(0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23)$' <<<"$i"
我的的代麻不可以吗?vincent_zh 写了:或者要是有其它比较好的简洁的判断方法,也可以,谢谢
代码: 全选
#!/bin/bash
EXIT_CONDITION=exit
until [ "$var" = "$EXIT_CONDITION" ]
do
read -p "Please input: " var
echo "String: $var"
nbr=`echo $var | pcregrep -o '\d+'`
if [[ -n "$nbr" && "$nbr" -ge 0 && "$nbr" -le 23 ]]; then
echo "Valid"
else
echo "Invalid"
fi
done
代码: 全选
pcregrep -o '\d+'
代码: 全选
grep -o '[0-9]+'
。。。。原来你不会变通。vincent_zh 写了:不可以啊,看下这个你就知了
vincent@NSHM:~/Desktop$ read i
2a
vincent@NSHM:~/Desktop$ echo $i
2a
vincent@NSHM:~/Desktop$ expr $i \> 0
1
vincent@NSHM:~/Desktop$ expr $i \< 23
0
这就不对了啊,输入的时候可以输入任何字符的,没有限定的