1 - Скорости передачи данных по известному объему данных и времени.
2 - Объема данных по известной скорости передачи данных и времени.
3 - Времени передачи данных по известному объему и скорости передачи данных.
Используются почти все производные еденицы измерения используемых величин.
#!/bin/bash
Calc() { echo "scale=15; $*" | bc | sed 's/^\./0./' | sed '/\.0*/s/0*$//' | sed 's/\.$//'; }
# Время
# ===============================================================================================================
Time_f() {
clear; echo
echo "Указать время в:
1 - секундах
2 - минутах
3 - часах
4 - днях
5 - неделях
6 - месяцах
7 - годах"
echo
read -s -n1 Time_d
clear; echo
echo -n "Укажите значение времени в "
case $Time_d in
1) echo -n "секундах: "; Time_d=secs;;
2) echo -n "минутах: "; Time_d=mins;;
3) echo -n "часах: "; Time_d=hours;;
4) echo -n "днях: "; Time_d=days;;
5) echo -n "неделях: "; Time_d=weeks;;
6) echo -n "месяцах: "; Time_d=months;;
7) echo -n "годах: "; Time_d=years;;
*) echo "Неверное значение."; exit 1;;
esac
read Time
[ ${Time%.*} -ge 1 -a ${Time%.*} -le 1000000000000 ] || { echo " Ошибка: Значение вне диапазона."; exit 1; }
# Перевод в секунды
[ $Time_d = secs ] && { Time_sec=$Time; Time_d="$Time секунд"; }
[ $Time_d = mins ] && { Time_sec=$(echo "scale=15; $Time*60" | bc); Time_d="$Time минут"; }
[ $Time_d = hours ] && { Time_sec=$(echo "scale=15; ($Time*60)*60" | bc); Time_d="$Time часов"; }
[ $Time_d = days ] && { Time_sec=$(echo "scale=15; (($Time*60)*60)*24" | bc); Time_d="$Time дней"; }
[ $Time_d = weeks ] && { Time_sec=$(echo "scale=15; ((($Time*60)*60)*24)*7" | bc); Time_d="$Time недель"; }
[ $Time_d = months ] && { Time_sec=$(echo "scale=15; ((($Time*60)*60)*24)*30" | bc); Time_d="$Time месяцев"; }
[ $Time_d = years ] && { Time_sec=$(echo "scale=15; ((($Time*60)*60)*24)*365" | bc); Time_d="$Time лет"; }
}
# Скорость
# ===============================================================================================================
Speed_f() {
clear; echo
echo "Указать скорость в:
1 - Килобитах в секунду
2 - Мегабитах в секунду
3 - Гигабитах в секунду
4 - Килобайтах в секунду
5 - Мегабайтах в секунду
6 - Гигабайтах в секунду"
echo
read -s -n1 Speed_d
clear; echo
echo -n "Укажите значение скорости в "
case $Speed_d in
1) echo -n "килобитах в секунду: "; Speed_d=Kbit;;
2) echo -n "мегабитах в секунду: "; Speed_d=Mbit;;
3) echo -n "гигабитах в секунду: "; Speed_d=Gbit;;
4) echo -n "килобайтах в секунду: "; Speed_d=Kbyt;;
5) echo -n "мегабайтах в секунду: "; Speed_d=Mbyt;;
6) echo -n "гигабайтах в секунду: "; Speed_d=Gbyt;;
*) echo "Неверное значение."; exit 1;;
esac
read Speed
[ ${Speed%.*} -ge 1 -a ${Speed%.*} -le 1000000000000 ] || { echo " Ошибка: Значение вне диапазона."; exit 1; }
# Перевод в килобит-секунды
[ $Speed_d = Kbit ] && { Kbit_sec=$Speed; Speed_d="$Speed килобит в секунду"; }
[ $Speed_d = Mbit ] && { Kbit_sec=$(echo "scale=15; $Speed*1024" | bc); Speed_d="$Speed мегабит в секунду"; }
[ $Speed_d = Gbit ] && { Kbit_sec=$(echo "scale=15; ($Speed*1024)*1024" | bc); Speed_d="$Speed гигабит в секунду"; }
[ $Speed_d = Kbyte ] && { Kbit_sec=$(echo "scale=15; $Speed*8" | bc); Speed_d="$Speed килобайт в секунду"; }
[ $Speed_d = Mbyte ] && { Kbit_sec=$(echo "scale=15; ($Speed*1024)*8" | bc); Speed_d="$Speed мегабайт в секунду"; }
[ $Speed_d = Gbyte ] && { Kbit_sec=$(echo "scale=15; (($Speed*1024)*1024)*8" | bc); Speed_d="$Speed гигабайт в секунду"; }
}
# Объем данных
# ===============================================================================================================
Data_f() {
clear; echo
echo "Указать объем данных в:
1 - Килобайтах
2 - Мегабайтах
3 - Гигабайтах"
echo
read -s -n1 Data_d
clear; echo
echo -n "Укажите объем данных в "
case $Data_d in
1) echo -n "килобайтах: "; Data_d=Kbyte;;
2) echo -n "мегабайтах: "; Data_d=Mbyte;;
3) echo -n "гигабайтах: "; Data_d=Gbyte;;
*) echo "Неверное значение."; exit 1;;
esac
read Data
[ ${Data%.*} -ge 1 -a ${Data%.*} -le 1000000000000 ] || { echo " Ошибка: Значение вне диапазона."; exit 1; }
echo
# Перевод в килобиты
[ $Data_d = Kbyte ] && { KBits=$(echo "scale=15; $Data*8" | bc); Data_d="$Data килобайт"; }
[ $Data_d = Mbyte ] && { KBits=$(echo "scale=15; ($Data*1024)*8" | bc); Data_d="$Data мегабайт"; }
[ $Data_d = Gbyte ] && { KBits=$(echo "scale=15; (($Data*1024)*1024)*8" | bc); Data_d="$Data гигабайт"; }
}
# Вычисление времени передачи данных
# ===============================================================================================================
Find_time() {
Time_secs=$(Calc $KBits/$Kbit_sec)
Time_mins=$(Calc $Time_secs/60)
Time_hours=$(Calc $Time_mins/60)
Time_days=$(Calc $Time_hours/24)
Time_weeks=$(Calc $Time_days/7)
Time_months=$(Calc $Time_days/30)
Time_years=$(Calc $Time_days/365)
clear
echo
echo "Вычисление времени передачи данных"
echo
echo "Объем данных: $Data_d"
echo "Скорость передачи данных: $Speed_d"
echo "Время передачи данных:"
echo "$Time_secs секунд"
[ ${Time_mins%.*} -gt 0 ] && echo "$Time_mins минут"
[ ${Time_hours%.*} -gt 0 ] && echo "$Time_hours часов"
[ ${Time_days%.*} -gt 0 ] && echo "$Time_days дней"
[ ${Time_weeks%.*} -gt 0 ] && echo "$Time_weeks недель"
[ ${Time_months%.*} -gt 0 ] && echo "$Time_months месяцев"
[ ${Time_years%.*} -gt 0 ] && echo "$Time_years лет"
echo
}
# Вычисление скорости передачи данных
# ===============================================================================================================
Find_speed() {
Kbit_sec=$(Calc $KBits/$Time_sec)
Kbyte_sec=$(Calc $Kbit_sec/8)
Mbit_sec=$(Calc $Kbit_sec/1024)
Mbyte_sec=$(Calc $Mbit_sec/8)
Gbit_sec=$(Calc $Mbit_sec/1024)
Gbyte_sec=$(Calc $Gbit_sec/8)
clear
echo
echo "Вычисление скорости передачи данных"
echo
echo "Объем данных: $Data_d"
echo "Время передачи данных: $Time_d"
echo "Скорость передачи данных:"
echo "$Kbit_sec килобит в секунду"
[ ${Kbyte_sec%.*} -gt 0 ] && echo "$Kbyte_sec килобайт в секунду"
[ ${Mbit_sec%.*} -gt 0 ] && echo "$Mbit_sec мегабит в секунду"
[ ${Mbyte_sec%.*} -gt 0 ] && echo "$Mbyte_sec мегабайт в секунду"
[ ${Gbit_sec%.*} -gt 0 ] && echo "$Gbit_sec гигабит в секунду"
[ ${Gbyte_sec%.*} -gt 0 ] && echo "$Gbyte_sec гигабайт в секунду"
echo
}
# Вычисление объема данных
# ===============================================================================================================
Find_data() {
KBits=$(Calc $Kbit_sec*$Time_sec)
Kbytes=$(Calc $KBits/8)
Bytes=$(Calc $Kbytes*1024)
Mbytes=$(Calc $Kbytes/1024)
Gbytes=$(Calc $Mbytes/1024)
Tbytes=$(Calc $Gbytes/1024)
clear
echo
echo "Вычисление объема данных"
echo
echo "Время передачи данных: $Time_d"
echo "Скорость передачи данных: $Speed_d"
echo "Объем данных:"
echo "$Bytes байт"
[ ${Kbytes%.*} -gt 0 ] && echo "$Kbytes килобайт"
[ ${Mbytes%.*} -gt 0 ] && echo "$Mbytes мегабайт"
[ ${Gbytes%.*} -gt 0 ] && echo "$Gbytes гигабайт"
[ ${Tbytes%.*} -gt 0 ] && echo "$Tbytes терабайт"
echo
}
# Выбор действия
# ===============================================================================================================
Hlp() { echo "==================================Cправка======================================
При вводе не целых чисел, для разделения целой части от дробной используйте
только точку.
Диапазон всех вводимых чисел - от 1 до 1000000000000
Еденицы измерения информации:
Бит = 1 или 0
Байт = 8 бит
Килобит = 1024 Бит
Килобайт = 1024 Байт = 8,192 Бит
Мегабит = 1024 Килобит = 1,048,576 Бит
Мегабайт = 1024 Килобайт = 1,048,576 Байт = 8,388,608 Бит
Гигабит = 1024 Мегабит = 1,048,576 Килобит = 1,073,741,824 Бит
Гигабайт = 1024 Мегабайт = 1,048,576 Килобайт = 1,073,741,824 Байт=
= 8,589,934,592 Бит
Терабит = 1024 Гигабит = 1,048,576 Мегабит = 1,073,741,824 Килобит=
= 1,099,511,627,776 Бит
Терабайт = 1024 Гигабайт = 1,048,576 Мегабайт = 1,073,741,824 Килобайт=
= 1,099,511,627,776 Байт = 8,796,093,022,208 Бит
Еденицы измерения времени:
Секунда
Минута = 60 секунд
Час = 60 минут = 3600 секунд
Сутки = 24 часа = 1440 минут = 86400 секунд
Неделя = 7 суток = 168 часов = 10080 минут = 604800 секунд
Месяц = 30 суток = 4 недели* = 720 часов = 43200 минут = 2592000 секунд
Год = 12 месяцев = 52 недели* = 365 суток = 8760 часов = 525600 минут=
= 31536000 секунд
*Примерное значение
===============================================================================
" | less
}
clear
echo "
Выберите действие:
1 - Вычисление скорости передачи данных
по известному объему данных и времени.
2 - Вычисление объема данных
по известной скорости передачи данных и времени.
3 - Вычисление времени передачи данных
по известному объему и скорости передачи данных.
h - Справка
"
read -s -n1 Select_act
case $Select_act in
1) Data_f; Time_f; Find_speed;;
2) Time_f; Speed_f; Find_data;;
3) Data_f; Speed_f; Find_time;;
h|H) Hlp; exit 0;;
*) echo "Неверное значение."; exit 1;;
esac