2015-09-09 2 views
-1

Я пытаюсь обработать выпуск программного обеспечения на основе номера версии, который следует взять здесь.Оцените, что больше числа

<!-- language: lang-sh --> 

    if [ `expr ${rel_choice}\<2.24` -eq 0 ]; then  
    rel_223 
     elif [ `expr ${rel_choice}\=2.25` -eq 0 ]; then 
     rel_225 
      elif [ `expr ${rel_choice}\>2.25` -eq 0 ]; then 
      rel_226 
else 

lp_error "Could not evaluate release number" 

fi 

Проблема у меня есть, независимо от того, какой номер я выбираю, программа запускает только функцию rel_223. Вот вывод отладки.

Enter stream required for BSB?: 2.25 
The Client is BSB 
The Release number is 2.25 
The build directory is ACEV225 
+ expr 2.25<2.24 
+ [ 2.25<2.24 -eq 0 ] 
+ echo rel_223 
rel_223 
+ read 
+0

Вы проверяли фактическое значение '$ rel_choice'? Вы пробовали команды 'expr' автономно в оболочке? –

+0

Да, $ rel_choice - эта часть отладки: номер версии 2.25 –

+1

Почему вы ожидаете 0 в результате вашего первого 'expr'? Прямо сейчас у меня нет «expr» для тестирования, но в онлайн-справке говорится: «Статус выхода равен 0, если EXPRESSION не является ни нулевым, ни 0, 1, если EXPRESSION имеет значение null или 0». Может ли быть, что 2.25 <2.2.4 разрешает что-то еще, чем 0, и 'expr'returns 0? –

ответ

0

Попробуйте это:

[ `ехрг $ {rel_choice} "<" 2.24` -eq 0]

Обратите внимание, что здесь оператор цитируемый и отделен пробелами от операнды. Для меня это сработало:

expr 1 "<" 2 
1 

expr 1 "<" 1 
0 

expr 1 "<" 0 
0 

версия Я попытался это:

expr --version 
expr (GNU coreutils) 8.24 
Packaged by Cygwin (8.24-3) 
Copyright (C) 2015 Free Software Foundation, Inc. 
+0

Я запускаю это на SunOS не всегда так же дружелюбно, как Linux .. В конце концов я пошел с менее чем красивым способом. if ['$ {rel_choice} | sed 's /\ .// g'' -le 224]; затем echo rel_223 elif ['$ {rel_choice} | sed 's /\ .// g'' -eq 225]; затем echo rel_225 elif ['$ {rel_choice} | sed 's /\ .// g'' -gt 225]; затем echo rel_226 еще lp_error "Не удалось оценить номер выпуска" fi Thanks –

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