сценарий выполняется только в том случае, если awk не нашел числа больше

У меня есть эта команда:

program script.sh >/dev/null 2>&1 &

«Программа» выполняет «script.sh» только в том случае, если одно условие из «программы» выполняется. И я хочу добавить еще одно условие в "script.sh" с помощью awk или sed.
например: if in the output of "program" is only one number greather than 60 do not send email if not send email вывод программы примерно такой:
program.log
peak: -5.19dB (not silent) peak: -74.75dB (X seconds of silence) **SILENCE** 59 seconds left in grace period.

И я не хочу записывать вывод "программы" на диск (только если это возможно)

Спасибо!


person Snowman    schedule 15.05.2016    source источник
comment
отредактируйте свой вопрос, включив в него краткие, проверяемые образцы входных данных и ожидаемые результаты.   -  person Ed Morton    schedule 15.05.2016
comment
Я думаю, что проблема на самом деле в (execute_)script.sh... нам нужно, чтобы вы открыли этот скрипт... поскольку я думаю, что Silentjack просто отправляет свой вывод в этот скрипт. Волшебство, которое контролирует печать вашей электронной почты, происходит внутри, и именно туда нам нужно добавить чек.   -  person Michael Back    schedule 15.05.2016
comment
@Snowman - нам было бы полезно сохранить ваш исходный вопрос, а затем также скопировать очищенную версию содержимого execute_script.sh - потому что ваш вопрос действительно связан с тем, что у меня есть эта программа, которая запускает события, которые отправляются в скрипт , но мне нужно сохранить состояние и сделать что-то особенное... В каком направлении мне двигаться, чтобы это исправить?   -  person Michael Back    schedule 15.05.2016


Ответы (1)


Я думаю, что внутри вашего script.sh нужен тест перед отправкой...

awk -F '[ (]+' '$7 > 90 { exit 1 }'

Ответ, вероятно, включает использование именованных каналов, тройник + замена процесса, тройник + FD или ...

https://unix.stackexchange.com/questions/28503/how-can-i-send-stdout-to-multiple-commands

person Michael Back    schedule 15.05.2016
comment
может есть другой способ. Я попытаюсь объяснить. сайленджек выполняет команду желания, когда срабатывает SILENCE. сайлентджек посчитайте секунды и затем выполните. После этого есть льготный период, пересчитайте и выполните, если по-прежнему тишина. Но в льготный период ничего не обнаружено. И я не могу установить длительный льготный период. Я хочу избежать отправки почты снова и снова. Я использую msmtp и mutt для отправки почты через учетную запись Google. msmtp записывает журнал, начиная с даты и времени отправки электронной почты. может быть, проще посчитать это ... я не знаю. @ Майкл Блэк: спасибо! - person Snowman; 15.05.2016
comment
Вау! Снеговик, ты действительно веселишься! Я думаю, вам нужно сохранить какое-то состояние в файле от каждого события сайленджека для последующих исполнений. Вы можете использовать для этого смесь AWK и оболочки или просто использовать AWK (я думаю, что skipjack примет любой простой исполняемый файл фильтра в качестве сценария обратного вызова). - person Michael Back; 15.05.2016
comment
@Ed - я пробовал это в командной строке, и одно время работала версия с strtonum() ... поэтому я просто скопировал эту версию как черновик ответа ... Я только что обновил ее, чтобы вытащить strtonum ( ) вне. - person Michael Back; 15.05.2016