简体   繁体   中英

Bash script : problem with my substraction

I would like to make a script that will calculate the difference of download time between two curl.

For example with this command:

curl -s -w 'total : %{time_total}\n' https://releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso -o ubuntu.iso >> total.txt

My curl command will be run each day and I would like to make a substraction between the value of the day and the value of the previous day. For that, I will save the time_total value of each day in an external file called total.txt:

total : 77,844315
total : 95,531319
total : 91,270609
total : 79,185359
total : 94,861921

For that, this is my script:

#!/bin/bash

Previous_value=$(cat total.txt| awk '{print $3}' | tail -n 2 | head -n 1 )
Current_value=$(cat total.txt | awk '{print $3}' | tail -n 2 | tail -n 1 )

echo "Yesterday download time : "$Previous_value"s"
echo "Today download time : "$Current_value"s"

test=$(($Current_value-$Previous_value))

echo "Download : + "$test"s"

Output:

Yesterday download time : 79,185359s
Today download time : 94,861921s
Download : + 185359s

The result should be Download: + 15.676562s but currently the result is Download: + 185359s . Someone to tell me why?

For more precise math use bc . Also make sure you are entering valid numbers. bc only interprets decimals for separating whole and fractional components so you may want to translate those commas to decimals: tr ',' '.'

Instead of:

echo $(( $A - $B ))

Do:

bc -l <<< "$A - $B"

Specifically for your script:

#!/bin/bash

Previous_value=$(cat total.txt| awk '{print $3}' | tail -n 2 | head -n 1 | tr ',' '.')
Current_value=$(cat total.txt | awk '{print $3}' | tail -n 2 | tail -n 1 | tr ',' '.')

echo "Yesterday download time : "${Previous_value}"s"
echo "Today download time : "${Current_value}"s"

test=$( bc -l <<< "${Current_value} - ${Previous_value}" )

echo "Download : + "$test"s"

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM