我试图做一个数字检查不包括小数以及范围检查但是它不起作用
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 :(得分: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
检查是否输入了一个,两个或三个数字,它不是零。