Integer 从脚本的ping命令获取整数值
当我运行Integer 从脚本的ping命令获取整数值,integer,ping,Integer,Ping,当我运行ping-c1-qipaddress | awk-F”/“{print$6}”时 我得到一个值0.123($MAXTIME用于该ping) 但当我尝试使用它(作为整数值)时,它失败了,原因如下: #!/bin/bash MAXTIME=`ping -c 1 -q 172.200.201.18 | awk -F"/" '{print $6}' | xargs` if [ $MAXTIME > 0.4 ] then echo "ALERT ALERT ALERT - Slow
ping-c1-qipaddress | awk-F”/“{print$6}”时
我得到一个值0.123
($MAXTIME
用于该ping)
但当我尝试使用它(作为整数值)时,它失败了,原因如下:
#!/bin/bash
MAXTIME=`ping -c 1 -q 172.200.201.18 | awk -F"/" '{print $6}' | xargs`
if [ $MAXTIME > 0.4 ]
then
echo "ALERT ALERT ALERT - Slow time"
echo "Actual max time $MAXTIME is greater than 0.400 ms"
echo "Napping..."
sleep 10
else
echo "Fast ping - OK"
echo "Napping..."
sleep 10
fi
我在输出上得到一个“错误”:
ALERT ALERT ALERT - Slow time
Actual max time 0.193 is greater than 0.400 ms
Napping...
如果我将语句更改为[$MAXTIME>0.1]
:
ALERT ALERT ALERT - Slow time
Actual max time 0.258 is greater than 0.100 ms
Napping...
ALERT ALERT ALERT - Slow time
Actual max time 0.324 is greater than 1.000 ms
Napping...
如果我将语句更改为[$MAXTIME>1]
:
ALERT ALERT ALERT - Slow time
Actual max time 0.258 is greater than 0.100 ms
Napping...
ALERT ALERT ALERT - Slow time
Actual max time 0.324 is greater than 1.000 ms
Napping...
逻辑似乎有问题(因为它总是返回true),可能
$MAXTIME
不是一个数值?如何使其成为if/then语句中使用的数值?在代码中,语句
被解释为重定向。因此,如果您查看目录,您会发现空文件的文件名为:0.4
、0.1
和1
,这是由于您的问题测试所致
对于浮点值(您的案例)
信息:双引号
“
防止在$MAXTIME
中出现空格或任何其他特殊字符。例如,如果您的脚本在计算机上使用另一版本的ping
,但其行为方式不同,则可能会发生这种情况。在您的代码中,语句
被解释为重定向。因此,如果您查看目录,您会发现空文件的文件名为:0.4
、0.1
和1
,这是由于您的问题测试所致
对于浮点值(您的案例)
信息:双引号
“
防止在$MAXTIME
中出现空格或任何其他特殊字符。例如,如果您的脚本在计算机上使用另一版本的ping
,则可能会发生这种情况。谢谢,就是这样。注意,这会将布尔值输出到stdout,因此我添加了:if expr“$MAXTIME”>'0.4>/dev/nullYes@user1183817 perfect:if expr“$MAXTIME”’谢谢,就这样。注意,这会将布尔值输出到stdout,因此我添加了:if expr“$MAXTIME”>'0.4>/dev/nullYes@user1183817 perfect:if expr“$MAXTIME”'