Скрипт выкидывает ошибку: integer expression expected (Конструкция if [ $f -gt 1 -le $f < 99 ]; then использует)

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Аватара пользователя
halo
Сообщения: 128
ОС: debian 4

Скрипт выкидывает ошибку: integer expression expected

Сообщение halo »

Пишу скрипт, который опрашивает удаленный хост. Значение пинга периодически меняется. В зависимости от значения пинга на вебстранице должен меняться фон ячейки таблицы. Красный фон - плохо. Зеленый - хорошо.
Конструкция if [ $f -gt 1 -le $f < 99 ]; then работает только с целочисленными значениями. Соответственно в консоли при запуске скрипта появляется ошибка: integer expression expected

Код:

#!/bin/sh f=10 while true do if [ $f -gt 1 -le $f < 99 ]; then echo "0 < "f" =< 100" f=`ping 10.104.199.1 -c 3 | tail -n 1 | awk -F/ '{print $5}'` elif [ "$f" -gt 100 -a "$f" -le 200 ]; then echo "* ""100 < "$f" =< 200" f=`ping 10.104.199.1 -c 3 | tail -n 1 | awk -F/ '{print $5}'` elif [ "$f" -gt 200 -a "$f" -le 300 ]; then echo "****""200 < "$f" =< 300" f=`ping 10.104.199.1 -c 3 | tail -n 1 | awk -F/ '{print $5}'` elif [ "$f" -gt 300 -a "$f" -le 400 ]; then echo "******""300 < "$f" =< 400" f=`ping 10.104.199.1 -c 3 | tail -n 1 | awk -F/ '{print $5}'` else echo "********" $f "> 400" f=`ping 10.104.199.1 -c 3 | tail -n 1 | awk -F/ '{print $5}'` fi done




Как побороть этот косяк? Спасибо. :rolleyes:
If I could, I would fly.
Спасибо сказали:
Аватара пользователя
korisk
Сообщения: 205
ОС: Xubuntu

Re: Скрипт выкидывает ошибку: integer expression expected

Сообщение korisk »

Можно попробовать использовать bc

Код:

e=1.2; b=0.2; res=$(echo "$e > $b && $b < 0"|bc); if [ "$res" = "0" ];then echo "ee"; fi
Registerd Linux user #486684 at http://counter.li.org/
Спасибо сказали:
Sleeping Daemon
Сообщения: 1450

Re: Скрипт выкидывает ошибку: integer expression expected

Сообщение Sleeping Daemon »

halo писал(а):
25.07.2009 19:29
Пишу скрипт, который опрашивает удаленный хост. Значение пинга периодически меняется. В зависимости от значения пинга на вебстранице должен меняться фон ячейки таблицы. Красный фон - плохо. Зеленый - хорошо.
Конструкция if [ $f -gt 1 -le $f < 99 ]; then работает только с целочисленными значениями. Соответственно в консоли при запуске скрипта появляется ошибка: integer expression expected

Код:

#!/bin/sh f=10 while true do if [ $f -gt 1 -le $f < 99 ]; then echo "0 < "f" =< 100" f=`ping 10.104.199.1 -c 3 | tail -n 1 | awk -F/ '{print $5}'` elif [ "$f" -gt 100 -a "$f" -le 200 ]; then echo "* ""100 < "$f" =< 200" f=`ping 10.104.199.1 -c 3 | tail -n 1 | awk -F/ '{print $5}'` elif [ "$f" -gt 200 -a "$f" -le 300 ]; then echo "****""200 < "$f" =< 300" f=`ping 10.104.199.1 -c 3 | tail -n 1 | awk -F/ '{print $5}'` elif [ "$f" -gt 300 -a "$f" -le 400 ]; then echo "******""300 < "$f" =< 400" f=`ping 10.104.199.1 -c 3 | tail -n 1 | awk -F/ '{print $5}'` else echo "********" $f "> 400" f=`ping 10.104.199.1 -c 3 | tail -n 1 | awk -F/ '{print $5}'` fi done




Как побороть этот косяк? Спасибо. :rolleyes:

Может так? printf("%i\n",$5)
Спасибо сказали:
Аватара пользователя
halo
Сообщения: 128
ОС: debian 4

Re: Скрипт выкидывает ошибку: integer expression expected

Сообщение halo »

Спасибо за ответы. Удалите тему!!!

iУведомление от модератора diesel

темы по просьбам пользователей на этом форуме не удаляют. Хотел написать в личку, но ящик забит. В следующей жалобе потрудитесь объяснить почему вы от нас требуете столь странных действий.
If I could, I would fly.
Спасибо сказали:
Аватара пользователя
korisk
Сообщения: 205
ОС: Xubuntu

Re: Скрипт выкидывает ошибку: integer expression expected

Сообщение korisk »

halo писал(а):
25.07.2009 22:45
Спасибо за ответы. Удалите тему!!!

Не подошли?
Registerd Linux user #486684 at http://counter.li.org/
Спасибо сказали:
Аватара пользователя
uptime
Сообщения: 1661
Статус: Drinker with computing problems
ОС: kubuntu 8.04

Re: Скрипт выкидывает ошибку: integer expression expected

Сообщение uptime »

halo
в другой раз с подобными вопросами лучше всё-таки в "программирование"...

успехов
The answer, my friend, is blowin' in the wind.
The answer is blowin' in the wind.
Спасибо сказали: