Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bashshell脚本变量值检查整数和数字范围_Bash_Shell - Fatal编程技术网

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

这将检查是否输入了一位、两位或三位数字且不是零。

非常感谢!忘记了+非常感谢!忘记了+