สคริปต์จะถูกดำเนินการเฉพาะในกรณีที่ 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 - มันจะมีประโยชน์สำหรับเราที่จะเก็บคำถามเดิมของคุณไว้จากนั้นก็คัดลอกเนื้อหาของexecut_script.shในเวอร์ชันที่ถูกสุขลักษณะด้วย - เพราะคำถามของคุณเกี่ยวข้องจริงๆ ฉันมีโปรแกรมนี้ที่เรียกใช้เหตุการณ์ที่ส่งไปยังสคริปต์ แต่ฉันต้องกอบกู้สถานะและทำอะไรเป็นพิเศษ... ฉันควรจะแก้ไขปัญหานี้ในทิศทางใด?   -  person Michael Back    schedule 15.05.2016


คำตอบ (1)


ฉันคิดว่าภายใน script.sh ของคุณ คุณต้องมีการทดสอบก่อนส่งทางไปรษณีย์...

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

คำตอบน่าจะเกี่ยวข้องกับการใช้ไปป์ที่มีชื่อ, tee + การทดแทนกระบวนการ, tee + FD's หรือ ...

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

person Michael Back    schedule 15.05.2016
comment
อาจเป็นอีกทางหนึ่ง ฉันจะพยายามอธิบาย Silentjack ดำเนินการคำสั่งความปรารถนาเมื่อ SILENCE ถูกทริกเกอร์ Silentjack นับวินาทีแล้วดำเนินการ หลังจากนั้นให้ตั้งระยะเวลาผ่อนผัน นับอีกครั้ง และดำเนินการหากยังเงียบอยู่ แต่ในช่วงผ่อนผันตรวจไม่พบ และฉันไม่สามารถกำหนดระยะเวลาผ่อนผันที่ยาวได้ ฉันต้องการหลีกเลี่ยงการส่งจดหมายซ้ำแล้วซ้ำอีก ฉันใช้ msmtp และ mutt เพื่อส่งอีเมลผ่านบัญชี Google msmtp เขียนบันทึกโดยเริ่มต้นด้วยวันที่และเวลาเมื่อส่งอีเมล อาจจะง่ายกว่าที่จะนับสิ่งนี้ ... ฉันไม่รู้ @ ไมเคิล แบล็ค : ขอบคุณ! - person Snowman; 15.05.2016
comment
ว้าว! สโนว์แมนคุณสนุกจริงๆ! ฉันคิดว่าคุณต้องบันทึกสถานะบางอย่างในไฟล์จากเหตุการณ์ Silentjack แต่ละเหตุการณ์เพื่อดำเนินการในภายหลัง คุณสามารถใช้ AWK และเชลล์ผสมกันสำหรับสิ่งนี้ หรือใช้ AWK (ฉันคิดว่า Skipjack จะใช้ตัวกรองแบบง่าย ๆ ที่สามารถเรียกใช้งานได้เป็นสคริปต์โทรกลับ) - person Michael Back; 15.05.2016
comment
@Ed - ฉันกำลังลองใช้บรรทัดคำสั่งและครั้งหนึ่งเวอร์ชันที่มี strtonum() ใช้งานได้ ... ดังนั้นฉันจึงคัดลอกเวอร์ชันนั้นเป็นคำตอบแบบร่าง ... ฉันอัปเดตตอนนี้เพื่อดึง strtonum( ) ออก. - person Michael Back; 15.05.2016