ДВА вопроса по SHELL (как правильнее вычленить из вывода команды нужное? и...)

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Аватара пользователя
Ufomen
Сообщения: 81
ОС: CentOS 5.3

ДВА вопроса по SHELL

Сообщение Ufomen »

Необходимо из вывода существующего скрипта

Код: Выделить всё

[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

Re: ДВА вопроса по SHELL

Сообщение SLEDopit »

Код: Выделить всё

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

Re: ДВА вопроса по SHELL

Сообщение Ufomen »

SLEDopit писал(а):
14.05.2009 19:23

Код: Выделить всё

if [ $(/root/qm/qmHandle -s|grep Total|cut -d' ' -f3) -gt 3000 ]
then
команды
fi
вместо gt можно применять lt,eq и др.
берется число из первой строчки, там где Total




Спасибо!! То что нужно, элегантно и не громоздко :happy:

Кстати... что означает значок $ в самом начале в if [ $...... :blush:
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: ДВА вопроса по SHELL

Сообщение sash-kan »

man bash, секция EXPANSION, подсекция Command Substitution.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: ДВА вопроса по SHELL

Сообщение SLEDopit »

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

Re: ДВА вопроса по SHELL

Сообщение drBatty »

Ufomen писал(а):
14.05.2009 19:12
как правильнее вычленить из вывода

info sed
Ufomen писал(а):
14.05.2009 19:12
Как его сравнить с пороговым?

man bc

PS: ну это если правильно...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: ДВА вопроса по SHELL

Сообщение diesel »

Код: Выделить всё

/root/qm/qmHandle -s | awk -F: '$1~/Total messages/ && $2 > 3000 {print "таки больше"}'
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: ДВА вопроса по SHELL

Сообщение drBatty »

Ufomen писал(а):
14.05.2009 19:12
Как его сравнить с пороговым?

diesel писал(а):
18.05.2009 11:49
awk

спасибо. sed действительно не умеет считать :(
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: