На самом деле это единственный раздел про unix на этом форуме
Модераторы: /dev/random , Модераторы разделов
Ufomen
Сообщения: 81
ОС: CentOS 5.3
Сообщение
Ufomen » 14.05.2009 19:12
Необходимо из вывода существующего скрипта
Код: Выделить всё
[root@srv root]# /root/qm/qmHandle -s
Total messages: 421
Messages with local recipients: 0
Messages with remote recipients: 421
Messages with bounces: 0
Messages in preprocess: 1
получить только значение 421 и затем сравнить это значение с некоторым пороговым (например 3000) в конструкции if например.
Вопроса два,
как правильнее вычленить из вывода команды нужное мне число
и
Как его сравнить с пороговым? Тут проблема в том, что обычно получается вычленить из вывода число как строку т.е. результат вычленения не пригоден для сравнения с пороговым значением. Помню, что кто-то говорил мне что преобразовать тип можно прямо в конструкции IF, но я не нашел как это делается.
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL
Сообщение
SLEDopit » 14.05.2009 19:23
Код: Выделить всё
if [ $(/root/qm/qmHandle -s|grep Total|cut -d' ' -f3) -gt 3000 ]
then
команды
fi
вместо gt можно применять lt,eq и др.
берется число из первой строчки, там где Total
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Ufomen
Сообщения: 81
ОС: CentOS 5.3
Сообщение
Ufomen » 14.05.2009 20:24
SLEDopit писал(а): ↑ 14.05.2009 19:23
Код: Выделить всё
if [ $(/root/qm/qmHandle -s|grep Total|cut -d' ' -f3) -gt 3000 ]
then
команды
fi
вместо gt можно применять lt,eq и др.
берется число из первой строчки, там где Total
Спасибо!! То что нужно, элегантно и не громоздко
Кстати... что означает значок $ в самом начале в if [ $......
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Сообщение
sash-kan » 14.05.2009 20:37
man bash, секция EXPANSION, подсекция Command Substitution.
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL
Сообщение
SLEDopit » 14.05.2009 20:40
Ufomen писал(а): ↑ 14.05.2009 20:24
Кстати... что означает значок $ в самом начале в if [ $......
$(команда) - выполняет вложенную команду и возвращает ее результат для дальнейшей обработки.
можно так же писать `команда`.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Сообщение
drBatty » 14.05.2009 21:55
Ufomen писал(а): ↑ 14.05.2009 19:12
как правильнее вычленить из вывода
info sed Ufomen писал(а): ↑ 14.05.2009 19:12
Как его сравнить с пороговым?
man bc
PS: ну это если
правильно ...
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Сообщение
diesel » 18.05.2009 11:49
Код: Выделить всё
/root/qm/qmHandle -s | awk -F: '$1~/Total messages/ && $2 > 3000 {print "таки больше"}'
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Сообщение
drBatty » 19.05.2009 11:46
Ufomen писал(а): ↑ 14.05.2009 19:12
Как его сравнить с пороговым?
diesel писал(а): ↑ 18.05.2009 11:49
awk
спасибо. sed действительно не умеет считать