linux 在bash中比较时间命令结果

lf3rwulv  于 2023-08-03  发布在  Linux
关注(0)|答案(1)|浏览(118)

我想检查一个shell脚本的网站的速度。我使用时间格式来获得数字结果,但我有问题的比较。这是我的剧本:

#!/bin/bash

TIMEFORMAT=%E
TOTAL=`time wget -pq --no-cache --delete-after -H https://www.netflix.com 2>&1`
echo $TOTAL

if [[ "$TOTAL" -gt 0 ]]; then
    echo 'YES'
else
    echo 'NO'
fi

字符串
结果大约大于2,但结果始终为否。
编辑
这是脚本的结果

2,119
NO


编辑2
谢谢,这样解决

#!/bin/bash

start=$(date +%s)
time wget -pq --no-cache --delete-after -H https://www.netflix.com 2>&1
end=$(date +%s)
total=$(($end-$start))

echo "Elapsed Time: $(($total)) seconds"

if [[ $total -gt 1 ]]; then
    echo 'YES'
else
    echo 'NO'
fi

ojsjcaue

ojsjcaue1#

在脚本中使用time命令(用于计算)并不方便,因为您必须解析所有输出并转换数字等。你的第二个版本是一个更好的方法和作品。
但是当你在bash算术函数$(($end-$start))中使用变量时,你不必在变量前面加上$。另外,为什么在echo-语句中使用$(($total))?使用$total
正如在注解中提到的,我还将使用SHELL内置的$SECONDS变量,而不是date(它将作为子进程运行)。现在并不需要time命令,但它可以很好地概述所使用的内核和用户模式CPU时间,这可能是您想要看到的。
所以结果会是这样的:

#!/bin/env bash

start=$SECONDS
time wget -pq --no-cache --delete-after -H https://www.netflix.com 2>&1
end=$SECONDS
total=$((end-start))

echo "Elapsed Time: $total seconds"

if [ $total -gt 1 ]
 then
   echo 'YES'
else
   echo 'NO'
fi

字符串

相关问题