Regex 用于Bash脚本检查MTR的正则表达式

Regex 用于Bash脚本检查MTR的正则表达式,regex,bash,Regex,Bash,我正在尝试创建一个bash脚本,它将grep“mtr”命令的输出,并查找超过0.0%的数据包丢失。换句话说,任何超过1.*%的值都会触发警报 我一直在玩下面的正则表达式bash脚本,似乎无法让它工作。非常感谢您的任何建议或指导 PACKETLOSS="[1-9]\.[0-9]\%" mtr -r -c 1 192.0.0.0 | grep PACKETLOSS &> /dev/null if [ $? == PACKETLOSS ]; then echo "Packet lo

我正在尝试创建一个bash脚本,它将grep“mtr”命令的输出,并查找超过0.0%的数据包丢失。换句话说,任何超过1.*%的值都会触发警报

我一直在玩下面的正则表达式bash脚本,似乎无法让它工作。非常感谢您的任何建议或指导

PACKETLOSS="[1-9]\.[0-9]\%"
mtr -r -c 1 192.0.0.0 | grep PACKETLOSS &> /dev/null
if [ $? == PACKETLOSS ]; then
   echo "Packet loss to server 192.0.0.0!"
fi

我认为唯一的错误是你在IF语句中,如果有任何错误代码与此代码为0匹配,你必须比较错误代码。 你也可以在第一个数字后面加一个+来改善你的正则表达式,这样10.0%到100.0%也会匹配

PACKETLOSS="[1-9]\+\.[0-9]\%"
mtr -r -c 1 192.0.0.0 | grep PACKETLOSS &> /dev/null
if [ $? == 0 ]; then
   echo "Packet loss to server 192.0.0.0!"
fi

这段代码对我很有用

你能不能也用代码标签在你的帖子中发布mtr-r-c 1 192.0.0.0命令的输出,让我们知道,我们会更容易指导你。我试图通过将变量更改为PACKETLOSS=[0-9]\+\.[0-9]\%来测试这一点,因为0.0%是标准,我没有收到echo alert语句。我使用grep和REGIX而不是变量来运行代码。不知道为什么它只对我起作用,但不管怎样,它现在起作用了。谢谢@Hans!工作代码mtr-r-c1192.0.0.0 | grep[1-9]\+\.[0-9]\%&>/dev/null