LINUX.ORG.RU

[bash] bash'евый кретинизм

 


0

1

Доброго времени суток.
Просьба, у кого хватит терпения, разъяснить или помочь.

Есть набросок скрипта:

function temp_monitor(){
echo $alarm_t
while true; do
z=`telnet hq 30001 2>&1 | grep 'Thermo:' | awk -F : '{print $3}'`
date_for_t=`date +%H:%M`
if [ $z -gt $alarm_t ]
then
    notify-send -u critical "Гермозона" "$date_for_t - $temp_in_GZ градуса!";
    aplay /tmp/ds/temp_alarm_sound;
else
    echo "ok"
fi
sleep 60;
done;
}

clear;
echo -e "\E[0;36m-=Duty scripT=-:\E[0;39m \E[0;32mTempchek\E[0;39m"
echo ""
echo "при какой температуре сообщать о проблеме?"
read -p " > " alarm_t
echo "$temp_alarm_sound_bin" > /tmp/ds/temp_alarm_sound_bin
base64 -d /tmp/ds/temp_alarm_sound_bin > /tmp/ds/temp_alarm_sound
temp_monitor ;


он работает. проблема состоит в том, что если запустить его , именно что бы он отрабатывал, не занимая консоль (последняя строка с «&») - он сообщает что:
для if'а - «[: -gt: ожидается использование унарного оператора»

никак не могу накопать, в чём беда

★★★

Последнее исправление: Spirit_of_Stallman (всего исправлений: 1)
Ответ на: комментарий от baverman

вы правы, проверка показала что $z пустая.
но как так может быть, что в случае первом - всё нормально, а когда вешаем его в фон - переменная оказывается пустой?

Spirit_of_Stallman ★★★
() автор топика
Ответ на: комментарий от Spirit_of_Stallman

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

sin_a ★★★★★
()
Ответ на: комментарий от Spirit_of_Stallman

Я не вижу больше причин, окромя вывода telnet. Может он отдает статистику через раз?

baverman ★★★
()

Иногда программа отваливается, если дескриптор закрыт.

Можно попробовать заменить их на /dev/null и проверить.

n01r ★★
()

> echo «при какой температуре сообщать о проблеме?»

read -p " > " alarm_t

в unix для этого принято использовать аргументы.

anonymous
()
Ответ на: комментарий от n01r

проблема локализованна, но не решена. по сути telnet, почему-то не хочет отрабатывать при работе в фоне

Spirit_of_Stallman ★★★
() автор топика
Ответ на: комментарий от anonymous

в виду того, наверное, что не программер - не понимаю о чём вы

Spirit_of_Stallman ★★★
() автор топика

проблема решена окончательно, телнету нужно было передавать, еще, «</dev/tty »
всем огромное спасибо за помощь

Spirit_of_Stallman ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.