Bash Shell脚本变量值检查整数和数字范围

时间:2016-01-08 07:48:36

标签: bash shell

我试图做一个数字检查不包括小数以及范围检查但是它不起作用

example of accepted numbers: 1, 10, 100
not accepted numbers: 1.1, 10.1, 100.1



echo "Qty Sold: "
read sold 
if [[ "$sold" =~ `^([0-9])$` && "$sold" -gt 0 && "$sold" -lt 999 ]] ;
then    
echo "ok"   
else     
echo "Error, Qty Sold Must be Positive Integer";
fi

3 个答案:

答案 0 :(得分:2)

删除正则表达式周围存在的反引号,并在NSNotFound后使用+以匹配一个或多个数字。

[0-9]

示例:

if [[ "$sold" =~ ^[0-9]+$ && "$sold" -gt 0 && "$sold" -lt 999 ]] ;

答案 1 :(得分:1)

不使用正则表达式:

type

答案 2 :(得分:0)

[[语法与[语法略有不同。 =~中的正则表达式周围不需要任何分隔符。因此,不需要/或反引号或撇号或&符号(仅当正则表达式包含空格。它可以通过反斜杠转义或在空格周围添加撇号或符号或使用[[:space:]]代替(也包括TAB和其他一些空白字符))。在$sold周围也不需要&符号(仅在[[!)。所以条件部分可能就像这样

if [[ $sold =~ ^[[:digit:]]{1,3}$ && $sold -gt 0 && $sold -lt 999 ]]; then echo ok
else  echo "Error, Qty Sold Must be Positive Integer between 1 and 998";
fi

检查是否输入了一个,两个或三个数字,它不是零。