bashshell脚本变量值检查整数和数字范围
我试图做一个数字检查,不包括小数以及范围内的检查,但它不工作bashshell脚本变量值检查整数和数字范围,bash,shell,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"
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
删除正则表达式周围的反勾号,并在
[0-9]
之后使用+匹配一个或多个数字
if [[ "$sold" =~ ^[0-9]+$ && "$sold" -gt 0 && "$sold" -lt 999 ]] ;
例如:
删除正则表达式周围的反勾号,并在
[0-9]
之后使用+匹配一个或多个数字
if [[ "$sold" =~ ^[0-9]+$ && "$sold" -gt 0 && "$sold" -lt 999 ]] ;
例如:
不使用正则表达式:
((sold>0 && sold <999)) 2>/dev/null && echo "ok" || echo "Error, Qty Sold Must be Positive Integer"
((销售>0&&sell/dev/null&&echo“确定”| | echo“错误,销售数量必须为正整数”
不使用正则表达式:
((sold>0 && sold <999)) 2>/dev/null && echo "ok" || echo "Error, Qty Sold Must be Positive Integer"
((销售>0&&sell/dev/null&&echo“确定”| | echo“错误,销售数量必须为正整数”
该[
语法与[
语法有点不同。在=~
中的正则表达式周围不需要任何分隔符。因此不需要/
或反勾号、撇号或符号AND(仅当正则表达式包含空格时)。可以通过反斜杠或在空格周围添加撇号或符号AND转义,也可以使用[:space:]]相反(还包括制表符和一些其他空白字符))。此外,$sell
(仅在[[
!)周围也不需要符号和。因此条件部分可能是这样的
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
这将检查是否输入了一位、两位或三位数字,并且它不是零。[
语法与[
语法有点不同。在=~
中,正则表达式周围不需要任何分隔符。因此不需要/
或反勾、撇号或符号and(仅当正则表达式包含空格时。它可以通过反斜杠转义,也可以在空格周围添加撇号或符号and,或者改用[[:space:](还包括制表符和其他一些空白字符))。此外,$sell
周围也不需要符号and(仅在[
!)因此条件部分可能是这样的
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
这将检查是否输入了一位、两位或三位数字且不是零。非常感谢!忘记了+非常感谢!忘记了+