BASH 4.3.46中第三个参数/regex匹配中的奇怪行为

BASH 4.3.46中第三个参数/regex匹配中的奇怪行为,regex,bash,arguments,Regex,Bash,Arguments,前言:我只是在学习bash脚本。所以我很有可能对下面的代码做了一些无知的事情 代码: 如您所见,应用于参数2的正则表达式与应用于参数3的正则表达式相同。但是,为这两个参数提供相同的输入会导致不同的结果 ./test.sh 192.168.1.0 25 25 Invalid Range! Valid IP 我已经修改了代码,以找出哪个正则表达式失败,它是正则表达式,每次3美元。我甚至改变了脚本中参数的位置。如果将IP更改为$3并重新排序参数,则即使在使用已知良好的IP时,IP的正则表达式也会失

前言:我只是在学习bash脚本。所以我很有可能对下面的代码做了一些无知的事情

代码:

如您所见,应用于参数2的正则表达式与应用于参数3的正则表达式相同。但是,为这两个参数提供相同的输入会导致不同的结果

./test.sh 192.168.1.0 25 25

Invalid Range!
Valid IP
我已经修改了代码,以找出哪个正则表达式失败,它是正则表达式,每次3美元。我甚至改变了脚本中参数的位置。如果将IP更改为$3并重新排序参数,则即使在使用已知良好的IP时,IP的正则表达式也会失败

因此,问题是:

我做错什么了吗

bash有什么问题吗


非常感谢bash大师的任何帮助。请让我知道,如果你想我添加修改后的代码,我用来测试。如果不需要,我不想用太多的代码阻塞这个问题。但是如果需要,我可以添加它。

您在
last
的作业中有一个打字错误:它应该是
last=$3
(在
=
周围没有空格)。您是否已经尝试在脚本中插入
set-x
(例如,作为第二行)?这将启用跟踪模式并帮助调试bash脚本;如果需要,只需使用
(($value>=1&&$value哇。谢谢你,切普纳。我一直到7点才想弄明白。我想这就是发生的情况。因此,更正打字错误修复了它,但是我真的很感激验证数字范围的更好方法。我已经更新了,它工作得很好。非常感谢你抽出时间。谢夫,我没有使用set-x选项。我会我今天肯定会研究这个问题,因为我相信它在不久的将来会很有用。你在
last
的作业中有一个打字错误:它应该是
last=$3
(在
=
周围没有空格)。你是否已经尝试在脚本中插入
set-x
?这将启用跟踪模式并有助于调试bash脚本。此外,不要使用正则表达式来验证数值范围;如果需要,只需使用
(($value>=1&&$value哇。谢谢你,切普纳。我一直到7点才想弄明白。我想这就是发生的情况。因此,更正打字错误修复了它,但是我真的很感激验证数字范围的更好方法。我已经更新了,它工作得很好。非常感谢你抽出时间。谢夫,我没有使用set-x选项。我会我今天肯定会研究这个,因为我相信它在不久的将来会有用的。
./test.sh 192.168.1.0 25 25

Invalid Range!
Valid IP