bash参数作为变量

时间:2014-09-06 02:00:56

标签: bash shell parsing nagios

嘿,我正在制作一个Nagios插件,旨在允许与perfdata进行复杂的比较。

这个想法是将比较字符串作为参数传递,然后使用它来提供状态。

check_vmstat «display» [-o «output vars»] [-w «warning expr.»] [-c «critical expr.»] -d «delay»

表达式是boolean expr。用变量名称。例如:

check_vmstat cpu_us,memory_free,memory_swpd -w (((cpu_us>80)&&(memory_free<20))||((memory_swpd>5)&&(memory_free<50))) -c *>90

同样«display»和«output_variables»将使用这样的术语。

你会怎么做?

1 个答案:

答案 0 :(得分:1)

首先,您必须引用条件,以便不在当前shell中评估它们

选项解析为练习:

warn='(((cpu_us>80)&&(memory_free<20))||((memory_swpd>5)&&(memory_free<50))) '
vmstat 1 2 | 
tail -n 1 | 
{ 
    read _ _ memory_swapd memory_free _ _ _ _ _ _ _ _ cpu_us _ _ _
    eval "(( $warn )) && echo WARNING"
}