设置——$(cat /proc/loadavg)

设置——$(cat /proc/loadavg)

嗨,我有一个 munin 插件可以做到这一点

load_fetch()  {
set -- $(cat /proc/loadavg)
cat <<EOF                                                                                                                                                                           
load1.value $1                                                                                                                                                                      
load5.value $2                                                                                                                                                                      
load15.value $3                                                                                                                                                                     
EOF                                                                                                                                                                                 
}

我很好奇是否有人可以告诉我“set --” 是做什么的?在 Google 上搜索并获取结果并不容易。

答案1

http://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html有一个解释。此命令(重新)设置参数变量(本例中为 $1、$2、$3、$4 和 $5)。cat /proc/loadavg为您提供一行包含一些数字的数据,并将输出提供给set --将这些数字映射到 $N 变量。

例如:

$ echo $1 $2

$ set -- HELLO WORLD
$ echo $1
HELLO
$ echo $2
WORLD

答案2

“Set --” 是 bash 子句,因此并非特定于 munin。查看 set 参数的 bash 帮助,您可以找到以下内容:

-- 如果此选项后没有参数,则位置参数未设置。否则,位置参数将设置为参数,即使其中一些参数以“-”开头。

在您的具体情况下,它的作用是将 cat/proc/loadavg 的内容映射/传递为参数 $1 $2 和 $3,以便之后它们可以分别将它们分配给 load1.value、load5.value 和 load15.value

欲了解更多信息请使用 man 或以下网址:http://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html

相关内容