2013-11-07 4 views
0

У меня есть две переменные с плавающей запятой, время и prev_time, и мне нужно их вычесть и проверить, не меньше ли 0. Я искал в десятках форумов, Кажется, он находит ответ, который работает. Мне нужно сделать что-то похожее на:Вычитание двух переменных с плавающей запятой и сравнение сценария оболочки

if [[ `expr $time-$prev_time | bc` -lt 0 ]] 

Любая помощь приветствуется

ответ

1

С вашего использования [[ ... ]], я предполагаю, что вы используете bash. Если вам все равно, что разница меньше 0, вам все равно, что $time меньше $prev_time. Вы можете разделить значения с плавающей точкой в ​​его целых частей, а затем сравнить их по отдельности:

IFS=. read time_int time_frac <<< $time 
IFS=. read prev_in prev_frac <<< $prev_time 
if ((time_int < prev_int || (time_int == prev_int && time_frac < prev_frac))); then 

Или, вы можете использовать bc этот путь (плюс, это POSIX-совместимый):

if [ "$(echo "$time - $prev_time < 0" | bc)" = 1 ]; 

bc выходы 1 если сравнение истинно, 0, если false.

+0

Спасибо! Это отлично работало –

Смежные вопросы